在 OC 中,我们知道对象的创建是要通过 alloc 方法,那么我们来探索这个方法,首先要找出它的源码,我们首先想到的是通过 command + 左击,我们发现此部分代码并未开源,那我们改怎么办呢?
这里我们提供一下苹果开源库的地址。
- 苹果开源源码汇总:opensource.apple.com/
- 更直接的地址:opensource.apple.com/tarballs/
知道哪里可以下载开源库了,那么怎么样知道 alloc 属于哪个开源库呢?
这里提供三个方法供参考。
- 方法一:直接取方法名作为符号断点查看(这里是 alloc)
- 方法二:按住 control,点击 step into 查看
- 方法三:汇编查看
方法一:直接取方法名作为符号断点查看(这里是 alloc)
1、程序运行到 alloc 方法下的断点处,然后添加 alloc 符号断点
2、添加完 alloc 符号断点后,继续跑,可以看到如下信息
通过以上流程得到我们想要的东西了 libobjc.A.dylib,推测 alloc 在这个库。
方法二:按住 control,点击 step into 查看
1、程序运行到 alloc 方法下的断点处,按住 Control 键,点击下图所示按钮
2、此时进入如下页面,我们拿到 objc_alloc 下符号断点
3、添加完 objc_alloc 符号断点后,继续跑,可以看到如下信息
此时就又找到了 libobjc.A.dylib。
方法三:汇编查看
1、程序运行到 alloc 方法下的断点处,点击 Debug -> Debug Workflow -> Always Show Disassembly
2、打开汇编后,继续跑,可以看到如下信息,我们又可以拿到 objc_alloc 下符号断点
3、同方法二的第三步
此时就又再次找到了 libobjc.A.dylib。
总结
通过以上三个方案的探索我们得知,对象的 alloc 在 libobjc.A.dylib 中,于是我们从苹果开发源中去下载源码。