Objective-C中的load initialize方法

看了好多文章觉得总结的不是我想要的,斗胆再总结一下

load

1、类被系统添加到runtime之前调用;

2、调用顺序:父类先于子类,子类先于category(category里的实现不会覆盖原类实现);

initialize

1、向类发送第一个消息之前调用(系统runtime自动调用的load不算);

2、会先调用父类的实现,再调用子类的实现,如果子类没有实现,还是调用继承自父类的。可以看出,父类的实现可能被多次调用。

3、系统对每个类只会发送一次消息(调用);

4、如果category中实现了initialize方法,会覆盖原先类中已经有的实现(如果有的话。没有就充当该类的实现);


load 、initialize相同点

1、自定义实现中都不需要显示调用父类的实现;

2、在不考虑开发者主动使用的情况下,系统最多会调用一次;

3、父类先于子类调用;


应用:

load中可以做method swizzling;

initialize可以初始化全局变量;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容