iOS面试题与核心基础之load&initialize

2022-04-01  本文已影响0人  十拿九稳啦

知识点

load

Xcode compile sources 列表越往后的参与编译越晚

调用时机

调用特点

调用顺序

+load方法是根据方法地址直接调用,并不是经过objc_msgSend函数调用。
如果是自己主动调用+load方法则是通过消息机制,先通过isa在类对象和元类对象的方法列表找,找不到则通过superclass指针在父类的类对象和元类对象找。不论通过isa还是superclass查找方法,最终都是后编译的分类的方法优先级比较高,而且消息机制方法调用的『覆盖特性』,找到方法就返回,所以只会调用一次+load方法。

initialize

调用时机

调用特点

调用顺序

面试题

  1. category中有load方法么?load方法是什么时候调用的?
    有,在runtime加载类、分类时调用
  2. load、initialize方法的区别是什么?他们在分类中的调用顺序?以及出现继承时他们之间的调用过程
  3. +initialize可能被调用多次么?为什么?
上一篇 下一篇

猜你喜欢

热点阅读