本文的目的主要是分析的加载过程。了解底层在主函数之前的所作所为
为什么要这个命令?根据常规思维理解,不是Main的输入功能?为什么Main的第一次执行不?
基于这个问题,我们将探索您在步行前往Main之前做什么。
在分析应用程序的开始之前,我们需要了解和和谐。
如下图所示,它主要分为以下步骤:
静态库和动态库的图如图所示
根据源代码以及源代码的协同分析
什么是染色器?
(动态链接编辑器)是Apple操作系统的重要组成部分。将应用程序编译并打包成文件格式后,
因此,应用程序的启动流程图如下
[应用启动起点]:从程序操作开始,从程序操作开始,因此您需要转到OpenSource下载DYLD源代码进行分析
以下分析[步骤3]和[步骤8]
步骤3:主程序初始化
步骤8:执行初始化方法
在这里,它需要将其分为探索的两个部分,一个是功能,部分是功能,该功能首先探索功能
通知函数
注意:需要在源代码中搜索该功能
负载功能负载
我们在下面输入的源代码是查看其实现,以便在证明中调用所有功能
因此,调用所有功能,上述源代码分析过程仅对应于堆栈的打印信息
[摘要]负载的源代码链是: - > - > - > - > - > - > - > - > - >(是回调处理) - > - > - > - > - > - > - > - > - > - > - > - > - > - >
所以问题是,_objc_int什么时候打电话给?
启动函数
在这里,您需要分为两个部分,一个是功能,部分是功能
来这里,或者您没有找到_objc_init的呼叫?如何做?您放弃吗?当然不是,我们也可以在使用符号断点之前检查呼叫。
结合上述分析,来自初始化的注册参数2,即呼叫,
因此,可以简单地理解,这是一个通知,即中间呼叫等同于发送通知,即通知的处理函数,即,即,即
【摘要】:_objc_init的源代码链: - > - > - > - > - > - > - > - > - > - > - > - > - (libsystem.b.dylib) - >(libdispatch.dylib) - >(libobjc.a.dylib)
步骤9:在运行整个过程后找到主入口功能,它将返回,然后调用函数,由汇编完成的参数分配的操作
因此,总而言之,最后,如下图所示,该图还解释了上一篇文章中的问题:为什么呼叫顺序
原始:https://juejin.cn/post/7096170825136472078