IOS OC中类方法+(void)load 和 +(void)i
作者:
小螳螂 | 来源:发表于
2017-09-06 22:08 被阅读0次
Apple中的文档说明了 initialize和load的区别在于:
- load只要类所在文件被引用就会被调用
-
initialize 是在类或者其子类的第一个方法被调用前调用
相同点:都只会调用一次,(相对于runtime来说的)
地方 |
+(void)load |
+(void)initialize |
执行时间 |
只要文件被引用,程序运行后立即执行 |
在类的方法第一次被调用前(引用并被初始化)时执行 |
自身未定义会沿用父类的方法吗 |
否 |
是 |
类别中的定义 |
全都执行但是后于类中的方法 |
覆盖类中的方法,只执行一个 |
使用总结
- load和initialize方法都会在实例化对象之前调用,以main函数为分水岭,前者在main函数之前调用,后者在之后调用。这两个方法会被自动调用,不能手动调用它们。
- load和initialize方法都不用显示的调用父类的方法而是自动调用,即使子类没有initialize方法也会调用父类的方法,而load方法则不会调用父类。
- load方法通常用来进行Method Swizzle,initialize方法一般用于初始化全局变量或静态变量。
- load和initialize方法内部使用了锁,因此它们是线程安全的。实现时要尽可能保持简单,避免阻塞线程,不要再使用锁。
本文标题:IOS OC中类方法+(void)load 和 +(void)i
本文链接:https://www.haomeiwen.com/subject/qjqgdxtx.html
网友评论