类本质的是? 类的加载过程?

类本质的东西
  1. 类也是一个对象;
  2. Person对象的类型是Class类型,Class里面包含了*
  3. 类本身也是对象,是个Class类型的对象;简称类对象;
  4. 利用Person类对象 创建Person类型的对象;
  5. 利用Class类型创建Person类对象;
  6. //获取内存中的类对象
  7. Class c = [p class];
  8. Class c2 = [p2 class];
  9. 也可以用Person类来获取类对象;
  10. Class c3 = [Person Class];
  11. 我们要查看p和p2的类对象,就是利用类方法class获得,c和c2的类对象都是Person类,而Person类本身就是Class类型;
  12. class类型的数据就是class对象;class是一个类方法;
  13. 如果本身是指针,就不需要加&就可以打印地址;如果不是指针类型,就用&取地址;
  14. 类对象 == 类;
  15. 一个类也可以叫类对象,因为它本身也是通过Class类创建出来的;如
  16. Person *p = [[Person alloc]init];
  17. Class c = [p class];
  18. [c test];
  19. c *p2 = [[c new]init];
  20. 上面的语句都是成立的,
 
类的加载过程;
  1. 不掌握这个东西也可以开发;
  2. 下面的操作都是会先调用父类的方法;
  3. load是程序启动的时候调用;initialize是第一次使用类的时候调用;
  4. 调用子类的过程,会先调用父类的方法;如有3个类,a是父类,b是a的子类,c是b的子类,那么第一次使用b类的时候,会先加载3个类的load方法;然后调用父类的initialize的方法,再调用b类的initialize的方法;
  5. 如果有分类,就先调用分类的initilize方法;
  6. 当程序启动的时候,就会加载一次项目中所有的类,类加载完毕后就会调用+load方法
  7. + (void)load
  8. {
  9. }
  10. 当第一次使用这个类的时候,就会调用一次initialize方法;
  11. + (void)initialize
  12. {
  13. }
  14. 总结:
  15. 当程序启动是,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次。
  16. 当第一次使用某个类时,就会调用当前类的+initialize方法;
  17. 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法)
  18. 先初始化父类,在初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)
  19. 先加载父类,再加载子类;
  20. 先加载父类,再加载分类;
  21. Class c = [Person class];
  22. Person *p2 = [c new];
posted on 2016-04-08 23:45 williamliuwen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/williamliuwen/p/5370399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值