07--应用加载06--总结与补充

2020-07-22  本文已影响0人  修_远
TOC

load_images 分析

(补)load在什么时候调用

在 load_images 里面调用

怎么调用?

typedef void(*load_method_t)(id, SEL);
(*load_method)(cls, SEL_load);
  1. 能拿到 prepare 中保存的数据模型有 idSEL
  2. 在call的地方拿到这两个方法直接调用函数 IMP
  3. 不需要调用 msg_send 发送消息

(面试)主类和分类的方法怎么调用

1. load 方法

2. 一般方法

prepare_load_methods 准备load方法

1. 准备load方法

2. 取出所有加载进去的类列表

classref_t *classlist = _getObjc2NonlazyClassList(mhdr, &count); 

3. 递归加载load方法

4. 取出分类数据

category_t **categorylist = _getObjc2NonlazyCategoryList(mhdr, &count); 

call_load_methods 调用 load 方法

  1. 压栈自动释放池:objc_autoreleasePoolPush();
  2. 调用主类的 load 方法:call_class_loads();。调用方式:(*load_method)(cls, SEL_load);
  3. 调用分类的 load 方法:call_category_loads();。调用方式:(*load_method)(cls, SEL_load);
  4. 出栈:objc_autoreleasePoolPop(pool);

(补)dealloc 方法调用顺序

这里做一个简单的介绍,后面会详细讲

initalize 分析

image
上一篇 下一篇

猜你喜欢

热点阅读