iOS之《Effective Objective-C 2.0》读书笔记(51)

第51条:精简initialize与load的实现代码

1.初始化方法

(1)有时候类必须先执行某些初始化操作,然后才可以正常使用
(2)NSObject类有两种初始化方式load和initialize

2.load方法

(1)对于加入运行期系统中的每个类及分类来说,必定会调用此方法,而且仅调用一次
(2)通常在应用程序启动的时候,就会执行此方法
(3)先调用类里面的,再调用分类里面的
(4)应用程序必须阻塞并等着所有类的load都执行完毕,才能继续
(5)一般不在load里面使用其它类,因为无法判断载入顺序
(6)不遵循继承规则

3.initialize方法

(1)是由运行期系统来调用的,绝不应该通过代码直接调用
(2)是“惰性调用的”,也就是说,只有当程序用到了相关的类时,才会调用
(3)遵循继承规则
(3)用来设置内部数据:如某个全局状态无法在编译期初始化,单例类也可以这样做

static NSMutableArray *kSomeObjects;
 @implementation People
 + (void)initialize {
     if (self == [People class]) {
         kSomeObjects = [NSMutableArray new]; 
     }
 }

你可能感兴趣的:(iOS,ios,objective-c,读书笔记,load,initialize)