首页 > 代码库 > [Objective-c 基础 - 2.9] 类的本质
[Objective-c 基础 - 2.9] 类的本质
A.概念
类对象:类也是一个对象,是Class类型的对象
实例对象:创建的对象,有一个isa指针指向类
B.操作
获取内存中的内对象
1.
使用实例对象获取
Class c = [p class];
不必使用*
2.
使用类获取
Class c = [Person class];
C.类的加载
1.先加载父类,再加载子类,加载完会调用+load方法
2.类和分类的加载方法+load都会被调用
3.第一次使用类的时候,会调用+initialize方法
4.先加载父类,再加载子类,最后加载分类(依次调用+load方法),被编译就会被加载
5.先初始化父类,再初始化子类(调用+initialize方法),第一次使用的时候才会被初始化
6.类和分类的+initialize方法调用跟普通方法一样,优先调用分类的;存在多个分类并且都覆盖了+initialize方法的时候,调用最后被编译的。
—>
+load:类的加载方法===>父类、子类、分类的都会被调用
+initialize:类被第一次使用时调用的初始化方法==>父类、子类的都被调用,分类具有优先级比较
创建一个Student对象并初始化:
继承关系: NSObject -> Person -> Student -> GoodStudent
2014-11-13 23:51:16.600 06-类的本质[8205:303] Person被加载
2014-11-13 23:51:16.602 06-类的本质[8205:303] Student被加载
2014-11-13 23:51:16.602 06-类的本质[8205:303] GoodStudent被加载
2014-11-13 23:51:16.603 06-类的本质[8205:303] Student+Study被加载
2014-11-13 23:51:16.603 06-类的本质[8205:303] Student+Learn被加载
2014-11-13 23:51:16.604 06-类的本质[8205:303] Person被第一次使用
2014-11-13 23:51:16.604 06-类的本质[8205:303] Student+Learn被第一次使用
Program ended with exit code: 0
2014-11-13 23:51:16.602 06-类的本质[8205:303] Student被加载
2014-11-13 23:51:16.602 06-类的本质[8205:303] GoodStudent被加载
2014-11-13 23:51:16.603 06-类的本质[8205:303] Student+Study被加载
2014-11-13 23:51:16.603 06-类的本质[8205:303] Student+Learn被加载
2014-11-13 23:51:16.604 06-类的本质[8205:303] Person被第一次使用
2014-11-13 23:51:16.604 06-类的本质[8205:303] Student+Learn被第一次使用
Program ended with exit code: 0
[Objective-c 基础 - 2.9] 类的本质
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。