iOS - OC对象原理 - alloc方法底层原理初探

193 阅读1分钟

跟踪alloc方法的具体流程:

  1. 在测试项目中合适的地方写一个alloc方法,并所在行下一个断点

  2. 利用LLDB的三种调试方法之一,定位到alloc方法在底层所用到的动态库的名字:

  3. 先运行,然后下名字为alloc的符号断点,然后点击继续运行(Continue program execution)

  4. 先运行,然后按住control并点击图示的箭头三次,然后将函数名objc_alloc_init加入到符号断点 (Step into instruction: 该指令代表单步执行CPU的指令,并跳入汇编的函数调用栈;如果用Step over instruction,虽然同样也是单步执行CPU的制定,但它不会跳入当前函数内部)

  5. 先通过路径打开Debug -> Debug Workflow -> Always show Disassembly,然后运行

  6. 有了动态库的名字后,在苹果的开源库网站找到对应的开源库源码:

  7. 打开源码网站:[https://opensource.apple.com/source/](https://opensource.apple.com/source/)
  8. 搜索关键词objc,找到可以编译出libobjc.A.dylib的动态库的最新源码(objc4-781),当前最新的稳定版本为781

  9. 配置objc4-781的环境并运行(可参考其他博客的配置流程)

  10. 在objc的源码环境下,我们就可以通过断点跟踪alloc的底层调用了