load和initialize

最近找工作中被问到这个问题,整个人就闷了,这是什么鬼……

  1. load 方法在这个文件被程序装载的时候调用。
  2. 每调用load方法就会先调用它的父类load方法

如果没有调用该load方法,则不会调用父类的load方法

  1. load方法总是在mian函数之前调用

除了Method Swizzle ,别的逻辑都不应该放到load方法中

  • initialize

第一次给某个类发送消息的时候会被调用(同时会调用父类的initialize方法),并且只会调用一次

  • 总结
  1. load和initialize方法都会在实例化对象之前调用,以main函数为分水岭,前者在main函数之前调用,后者在之后调用。这两个方法会被自动调用,不能手动调用它们。
  2. load和initialize方法都不用显示的调用父类的方法而是自动调用,即使子类没有initialize方法也会调用父类的方法,而load方法则不会调用父类。
  3. load方法通常用来进行Method Swizzle,initialize方法一般用于初始化全局变量或静态变量。
  4. load和initialize方法内部使用了锁,因此它们是线程安全的。实现时要尽可能保持简单,避免阻塞线程,不要再使用锁。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前在写《Category你真的懂吗?》那篇简书收集资料的时候,看了很多load和initialize的资料,加深...
    一剑孤城阅读 2,735评论 3 24
  • load,再启动之前调用 1:父类 2:子类 3:分类 根据函数地址调用 initialize,在初次使用类对象的...
    哈哈哈我的简书账号阅读 371评论 1 1
  • load load方法在这个文件被程序装载时调用(这个类被加入内存的时候调用),这与这个类是否被用到无关,因此lo...
    摄影师诺风阅读 477评论 0 0
  • OC中有两个特殊的类方法,分别是load和initialize。本文总结一下这两个方法的区别于联系、使用场景和注意...
    RobinYu阅读 442评论 0 3
  • 孤独风中的黑魔仙 两个人在一起 寻求喧哗的鼓点 还是安静的契合我只能说这两者缺一不可 就像人不只有身体一样 感受 ...
    漫长boy阅读 125评论 0 0