iOS开发我爱编程

iOS开发+(void)load与+(void)initiali

2018-04-16  本文已影响44人  路飞_Luck
导读

在iOS开发中,就像Application有生命周期回调方法一样,在Objective-C的类被加载和初始化的时候,也可以收到方法回调,可以在适当的情况下做一些定制处理。而这正是本篇文章所要介绍的load和initialize方法可以帮我们做到的。

load和initialize的共同特点

+load方法

通俗的讲就是: 在程序启动之前会调用所有的类的(手动实现的)+load方法(没有实现就不调用咯),按(父类->子类->类别)的顺序调用.


+initialize方法

通俗的讲就是:在程序启动之后,在第一次创建这个类的对象的时候(也就是分配内存空间alloc的时候),会调用该类的+initialize方法且只调用一次.

[调用顺序 1.如果父类的initialize方法没有被调用过会先调用父类的initialize方法) 2.如果该类有类别只会调用类别的+initialize(如果有多个类别会调用某一个类别的initialize方法,其他的不会调用)]


总结

由于initialize的这些特点,使得其应用比load要略微广泛一些。可用来做一些初始化工作,或者单例模式的一种实现方案。

Apple的文档很清楚地说明了initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。
本文参考IOS开发+(void)load与+(void)initialize区别,感谢该作者

上一篇下一篇

猜你喜欢

热点阅读