iOS-App的加载过程-02

2020-09-27  本文已影响0人  AndyGF

接上一篇文章 iOS-App的加载过程-01, 继续分析 App 的加载过程, 那么我们接着上篇文章的七个步骤.

以上七个步骤中, 前6个已经基本明了, 还没有看到执行到 main() 函数, 接下来就剩下第七步中 initializeMainExecutable();notifyMonitoringDyldMain();

如果跳不进去, xcode12是跳不进去的, 需要全局搜索 runInitializers(const .

runInitializers processInitializers 函数

-7.4 继续跳进 recursiveInitialization 函数, 发现有一个 if {} 代码块代码比较多, 我们先折叠起来, 整体看下, 又发现其他没什么重点, 那么重点肯定在 if 代码块里了.

注意: 是 ImageLoader::recursiveInitialization

ImageLoader::recursiveInitialization recursiveInitialization 重点 notifySingle 搜索 sNotifyObjCInit registerObjCNotifiers 调用

7.8 全局搜索 _dyld_objc_notify_register(, 发现没有找到调用他的地方, 线索到这里就断了, 走不通了, 那么我们就得回去, 重新回到 7.4.1if 代码块里, 看看是不是漏掉了什么, 仔细查找, 你细品. 两个notifySingle中间有一行代码, 注释是 initialize this image, 初始化, 看样子很重要, 那还犹豫什么, 赶紧跳进去看看吧.

doInitialization 调用 doInitialization 实现

未完待续/........

查找流程
initializeMainExecutable
runInitializers
processInitializers
recursiveInitialization

上一篇 下一篇

猜你喜欢

热点阅读