Objective-C中的load和initialize方法

1、简单介绍load和initialize OC中有两个特殊的类方法,分别是load和initialize,它们是NSObject类的方法。

2、load 在应用程序启动后,执行main方法前,会执行所有类的加载,执行每个类的load方法,哪个类的load先执行取决于在Compile Sources中的顺序,但是继承关系的类除外,子类执行load方法系统总是会自动的执行父类的load方法,类别的load方法执行总是会先执行该类的load方法

3、initialize 这个方法在第一次给某个类发送消息时调用(比如实例化一个对象),并且只会调用一次。initialize方法实际上是一种惰性调用,也就是说如果一个类一直没被用到,那它的initialize方法也不会被调用,这一点有利于节约资源。

4、相同点和不同点 同: 1>load和initialize方法在整个应用程序生命周期内都只执行一次 2>这两个方法会被自动调用,不能手动调用它们 3>load和initialize方法内部使用了锁,因此它们是线程安全的。实现时要尽可能保持简单,避免阻塞线程,不要再使用锁。 不同: 1>load和initialize方法都会在实例化对象之前调用,前者在程序执行后立即执行,后者在该类第一次使用前调用。 2>load方法通常用来进行Method Swizzle,initialize方法一般用于初始化全局变量或静态变量。 3>load和initialize方法都不用显式的调用父类的方法而系统会自动调用 子类重写load和initialize方法都会造成父类的方法先执行 子类没有重写initialize方法也会调用父类的initialize方法,而load方法则不会

4>类别中如果实现了load和initialize方法,类别和类中的load方法都会执行,但是只会执行类别中的initialize方法,类中的initialize方法不会执行

转载于:https://my.oschina.net/KeepDoing/blog/1058154

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值