美文网首页
IOS OC中类方法+(void)load 和 +(void)i

IOS OC中类方法+(void)load 和 +(void)i

作者: 小螳螂 | 来源:发表于2017-09-06 22:08 被阅读0次

    Apple中的文档说明了 initialize和load的区别在于:

    1. load只要类所在文件被引用就会被调用
    2. initialize 是在类或者其子类的第一个方法被调用前调用
      相同点:都只会调用一次,(相对于runtime来说的)
    地方 +(void)load +(void)initialize
    执行时间 只要文件被引用,程序运行后立即执行 在类的方法第一次被调用前(引用并被初始化)时执行
    自身未定义会沿用父类的方法吗
    类别中的定义 全都执行但是后于类中的方法 覆盖类中的方法,只执行一个

    使用总结

    1. load和initialize方法都会在实例化对象之前调用,以main函数为分水岭,前者在main函数之前调用,后者在之后调用。这两个方法会被自动调用,不能手动调用它们。
    2. load和initialize方法都不用显示的调用父类的方法而是自动调用,即使子类没有initialize方法也会调用父类的方法,而load方法则不会调用父类。
    3. load方法通常用来进行Method Swizzle,initialize方法一般用于初始化全局变量或静态变量。
    4. load和initialize方法内部使用了锁,因此它们是线程安全的。实现时要尽可能保持简单,避免阻塞线程,不要再使用锁。

    相关文章

      网友评论

          本文标题:IOS OC中类方法+(void)load 和 +(void)i

          本文链接:https://www.haomeiwen.com/subject/qjqgdxtx.html