IOS 关于+load和+initialize的区分(结合实际代码例子)

本文详细解析了Objective-C中+load与+initialize方法的区别与应用场景。+load方法仅在App启动前执行一次,常用于runtime的实现;而+initialize则在类首次被使用时执行,影响所有子类及父类。文章通过代码示例和输出结果,深入浅出地解释了这两个方法的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于+load 和+initialize 的区分
更深入的理解 传送门
更通俗一点的理解场景分析的 传送门
在这里插入图片描述
画圈的地方是输出结果,也是重点。

总结

load 只执行一次而且是在App启动之前就加载的,大多数这里会写一些runtime的实现。
子类利用runtime实现函数的处理也会影响父类(这里是重点要考虑的)。
比如我们在给 UINavigationController 的 viewDidLoad 利用runtime 加处理的时候,也会影响UIViewController。
在这里插入图片描述
从代码和打印结果来看,initialize 也是执行一次的(当然要使用的时候才执行)。不过其最后一层的子类调用过程中其父类,父类的父类都会受到影响。
Dome 传送门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值