本文主要是介绍OC_类、description方法、SEL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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];//会引发死循环
}
这篇关于OC_类、description方法、SEL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!