+(void)load; +(void)initialize;有什 么用处?

+(void)load;

当类对象被引入项目时, runtime会向每一个类对象发送load消息

load方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子

类,子类优先于分类

由于load方法会在类被import时调用一次,而这时往往是改变类的行为的最佳时

机,在这里可以使用例如method swizlling来修改原有的方法

load方法不会被类自动继承

+(void)initialize;

也是在第一次使用这个类的时候会调用这个方法,也就是说initialize也是懒加载总结:

在Objective-C中,runtime会自动调用每个类的这两个方法

+load会在类初始加载时调用

+initialize会在第一次调用类的类方法或实例方法之前被调用

这两个方法是可选的,且只有在实现了它们时才会被调用两者的共同点:两个方法都只会被调用一次

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容