OC类的深入研究

1.类的本质

类本身也是一个对象,是Class类型的对象,简称“类对象”,我的理解是每个类都是一个对象,类型是Class,就像新建一个Person类,可以初始化很多对象,而这些对象的类型是Person;

Class类型的定义:typedef struct objc class *Class;初始化的Class类型的对象本身就是个指针,所以初始化的时候前面不用加*。

类名就代表着类对象,每个类只有一个类对象。

2.类的加载和初始化

1>加载

在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法

//当程序启动的时候,就会加载一次项目中所有的类。类加载完毕后会调用+load方法

+ (void)load

{

    NSLog(@"Person---load");

}

//当第一次使用这个类的时候,就会调用一次initialize方法

+ (void)initialize

{

    NSLog(@"Person-initialize");

}

在每个类的.m文件中都加上这个段代码,在没有初始化对象的情况下运行的结果是


所以每次程序启动的时候会加载所有类和分类的+load方法,并且是先加载父类,最后加载分类

2>初始化

在第一次使用某个类时就会调用一次+initialize方法,并且一个类只会调用一次+initialize方法,先调用父类,再调用子类,下面测试:

还是刚才的代码,不过这次要创建一个GoodStudent对象


还有如果父类有分类,并且分类也重写了+initialize方法,那么就不会调用父类的+initialize方法

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值