美文网首页
OC中的load和initialize方法

OC中的load和initialize方法

作者: 原风景 | 来源:发表于2018-01-15 09:49 被阅读0次

1、+load方法当类或分类添加到object-c runtime时被调用,子类的+load方法会在它所有父类的+load方法之后执行,而分类的+load方法会在它的主类的+load方法之后执行。但不同的类之间的+load方法的调用顺序是不确定的,所以不要在此方法中用另一个类。

2、+load方法不像普通方法一样,它不遵循那套继承规则。如果某个类本身没有实现+load方法,那么不管其它各级超类是否实现此方法,系统都不会调用。+load方法调用顺序是:SuperClass -->SubClass --> CategaryClass。

3、+initialize是在类或者它的子类接受第一条消息前被调用,但是在它的超类接收到initialize之后。也就是说+initialize是以懒加载的方式被调用的,如果程序一直没有给某个类或它的子类发送消息,那么这个类的+initialize方法是不会被调用的。

4、+initialize方法和+load方法还有个区别,就是运行期系统完整度上来讲,此时可以安全使用并调用任意类中的任意方法。而且,运行期系统也能确保+initialize方法一定会在“线程安全的环境”中执行,这就是说,只有执行+initialize的那个线程可以操作类或类实例,其他线程都要阻塞等着+initialize执行完。

5、+initialize方法和其他类一样,如果某个类未实现它,而其超类实现了,那么就会运行超类的实现代码。如果本身和超类都没有实现,超类的分类实现了,就会去调用分类的initialize方法。如果本身没有实现,超类和父类的分类实现了就会去调分类的initialize方法。不管是在超类中还是分类中实现initialize方法都会被调多次,调用顺序是SuperClass -->SubClass。

相关文章

  • 技术点

    1、oc中 load 和initialize 方法的异同? 连接 load 方法: 对于每个类(class)及分类...

  • OC中的load和initialize的区别

    OC中的load和initialize的区别 调用方式load是根据函数地址直接调用initialize是通过ob...

  • OC中load和initialize方法

    前言 最近在因为工作的原因,空余时间相对多了一点。所以准备好好整理一下OC相关的基础知识,以便加固相关的知识点。 ...

  • iOS学习回顾

    oc部分 1. load和initialize的区别(利用load方法,MJRefresh在app启动时 在UIT...

  • load方法和initialize方法的区别整理

    load方法解析- initialize方法解析 load 和 initialize方法的区别: 1、 调用方式:...

  • OC中的load和initialize方法

    1、+load方法当类或分类添加到object-c runtime时被调用,子类的+load方法会在它所有父类的+...

  • OC中的load和initialize方法

    load 在文件被装载的时候调用,main函数之前;initialize在第一次给类发送信息时候调用,在main之...

  • OC中的load和initialize方法

    load load方法在这个文件被程序装载时调用(这个类被加入内存的时候调用),这与这个类是否被用到无关,因此lo...

  • OC中的load和initialize方法

    内容 load initialize 参考链接 load方法 官方文档说明: A class’s +load me...

  • OC中的load和initialize方法

    OC 中有两个特殊的类方法,分别是 load 和 initialize。本文总结一下这两个方法的区别于联系、使用场...

网友评论

      本文标题:OC中的load和initialize方法

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