iOS之类方法load和initialize

来源:互联网 发布:timeline js 编辑:程序博客网 时间:2024/05/29 14:59

load和initialize这两个类方法,

在于iOS会在运行期提前并且自动调用这两个方法,而且很多对于类方法的规则(比如继承,类别(Category))都有不同的处理。

而因为这两个方法是在程序运行一开始就被调用的方法,我们可以利用他们在类被使用前,做一些预处理工作。

initialize和load的区别在于:load是只要类所在文件被引用就会被调用,而initialize是在类或者其子类的第一个方法被调用前调用。所以如果类没有被引用进项目,就不会有load调用;但即使类文件被引用进来,但是没有使用,那么initialize也不会被调用。

runtime对+(void)load的调用并视为类的第一个方法

子类方法的调用会激起父类的+(void)initialize被执行。即使子类没有定义+(void)initialize,但是它会使用父类的+(void)initialize。子类并不会在runtime时去使用父类的+(void)load,也就是说只有新定义的+(void)load才会被runtime去调用执行。

总结:

 +(void)load+(void)initialize执行时机在程序运行后立即执行在类的方法第一次被调时执行若自身未定义,是否沿用父类的方法?否是类别中的定义全都执行,但后于类中的方法覆盖类中的方法,只执行一个

0 0
原创粉丝点击