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]; 
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值