本文主要介绍iOS探索源码的三种方式:
-
符号断点
直接跟流程 - 通过按住
control
+step into
- 汇编跟流程
下面详细描述三种探索源码的方式:
1. 符号断点
直接跟流程
由于是alloc
方法的实现无法看到,故下一个'alloc'
的符号断点。
在
SLPerson
创建的行添加一个断点,同时暂时取消刚刚添加的alloc
的断点,运行工程~断点
此时打开
alloc
的符号断点,点击Continue program execution
过掉断点,可以看到程序断点在了libobjc.A.dylib
中的[NSObject alloc]
方法,由此可知alloc
方法的源码在libobjc.A.dylib
库中。libobjc.A.dylib
2. 通过按住control
+ step into
在SLPerson
创建的行添加一个断点,运行工程,当进入断点后按住control
键,点击step into
按钮~
进入断点后看到以下内容
断点
根据显示再下一个
objc_alloc
的符号断点后点击Continue program execution
按钮过掉当前断点,可以看到进入了libobjc.A.dylib
中的objc_alloc
函数,由此可知alloc
方法的源码在libobjc.A.dylib
库中。断点
3. 汇编跟流程
在SLPerson
创建的行添加一个断点,运行工程,当进入断点后选择Xcode
的Debug
菜单中的Debug Workflow
中的Always show disassembly
选项
可以看到断点变成了如下模样
断点
根据显示再下一个
objc_alloc
的符号断点后点击Continue program execution
按钮过掉当前断点,可以看到进入了libobjc.A.dylib
中的objc_alloc
函数,由此可知alloc
方法的源码在libobjc.A.dylib
库中。断点
Apple开源源码下载地址
1、Apple所有开源源码汇总地址,根据相应的版本查找对应的源码,以mac 10.15为例:macOS --> 10.15 --> 10.15 --> 搜索objc
2、Apple比较直接的源码下载地址,直接搜索库名即可,例如command+f
输入objc
,选择objc4 --> 选择所需版本
网友评论