OC_类、description方法、SEL

来源:互联网 发布:迅捷绑定mac地址 编辑:程序博客网 时间:2024/06/07 20:31

1.类:

     类的本质:类也是class类型的对象

             typedef struct objc_class  * Class;

             每个类只有一个类对象;

     

     

        1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类的+load方法;

        2.当第一次使用某个类的时候,会调用当前类的+initialize方法;

        3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法);

          先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法,initialize在第一次使用时加载);

        4.分类方法如果有+initialize方法,不会调用原来类的+initialize方法了;


2.description方法:


//类调用+description方法+(NSString *)description{    return @"Abc";}//对象调用+description方法-(NSString *)description{    //打印自身会引发死循环    //NSLog(@"%@",self);    return [NSString stringWithFormat:@"...."];}


3.SEL:

     1.方法的存储位置:

       每个类的方法列表都存储在类对象中

       每个方法都有与之对应的SEL类型的对象

       根据一个SEL对象就可以找到方法的地址,进而调用方法

     2.SEL类型的定义:

       typedef struct objc_selector  * SEL;

     3.SEL对象的创建:

        SEL s = @selector(test)

        SEL s2 = NSSelectorFromString(@"test");


     _cmd == @selector(test)

     

     -(void)test{

     //_cmd代表当前方法

     [self performSelector:_cmd];//会引发死循环

     }



0 0
原创粉丝点击