美文网首页ios底层原理
ios应用程序加载分析(二)

ios应用程序加载分析(二)

作者: erlich | 来源:发表于2022-07-05 22:28 被阅读0次

为了不至于分析链条发生断层,请参阅ios应用程序加载分析(一)

_dyld_objc_notify_register ---- sNotifyObjcInit 是如何关联上的

sNotifyObjcInit 分析源头

image.png image.png image.png image.png image.png image.png
以上源码出自于dyld
image.png

上一段源码出自于libobjc, libdyld与libobjc通过_dyld_objc_notify_register架起桥梁

image.png image.png
回到加载流程图
image.png image.png image.png image.png image.png
与 libSystem_initializer 衔接上,此时缺口补上

map_images()镜像文件类的信息 class ro rw protocols 处理

根据以上分析得到句柄出处 sNotifyObjcInit
image.png image.png image.png image.png

arr_init()

  • SideTablesMap.init(); 初始化散列表

  • _objc_associations_init(); 关联对象管理 初始化

  • startWeakTableScan(); 扫描若引用

image.png

修复selector

image.png image.png

Fix up old objc_msgSend_fixup call sites

image.png image.png

实现 (有实现+load方法)的类

image.png

load_images() load方法 - c++函数 + load + main

+load
image.png image.png image.png image.png
c++
image.png image.png image.png

镜像内的 c++方法 晚于 +load执行,objc镜像内的 c++方法 早于 +load执行 最后main

image.png

类加载主干流程总结

image.png

_dyld_objc_notify_register 之前,执行 static_init()

也就是objc镜像内的 attribute((constructor)) 修饰的c++函数会先执行

load_images 执行之后 -> doModInitFunctions, 执行 目标镜像 attribute((constructor)) 修饰的c++函数

相关文章

  • 应用程序的加载分析

    应用程序的加载分析 作为一个开发者,对于iOS应用程序启动过程有很多疑问,本篇就应用程序是如何加载的,做相关分析 ...

  • ios应用程序加载分析(二)

    为了不至于分析链条发生断层,请参阅ios应用程序加载分析(一)[https://www.jianshu.com/p...

  • iOS内存分析上-图片加载内存分析

    iOS内存分析上-图片加载内存分析 iOS内存分析上-图片加载内存分析

  • iOS dyld

    一、应用程序加载原理 在分析dyld加载应用程序之前,先清楚以下基本概念。库:可执行的二进制文件,可以被系统加载到...

  • iOS引用程序加载流程-dyld

    一、应用程序加载原理 在分析dyld加载应用程序之前,先清楚以下基本概念。库:可执行的二进制文件,可以被系统加载到...

  • dyld & objc的关联

    抛出问题 上回说到iOS应用程序加载大致流程分析[https://www.jianshu.com/p/ba53fa...

  • iOS 应用程序加载流程分析

    本文的目的主要是分析dyld的加载流程 首先我们先运行个代码 来引入我们今天的主题~~ 运行结果: 运行程序,查看...

  • iOS 应用程序加载流程分析

    在我们的日常开发中我们都知道,应用程序的执行都会依赖一些底层的基础库,例如 UIKit , Foundation ...

  • ios应用程序加载分析(一)

    app启动分析+猜测 首先通过入口函数main断点查看 nothing ... 通过load入口断点查看 得到大致...

  • OC底层原理10—应用程序加载

    之前分析了消息的发送、转发,那么消息是如何加载到类中的呢?研究类的加载,就要先研究下应用程序的加载。在应用程序加载...

网友评论

    本文标题:ios应用程序加载分析(二)

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