前言

     作为iOS开发,看底层源码基本是必须的,但是很多人都想看源码,但是入门无路,所以在进行底层探索之前,先介绍一篇文章来描述一下我一般是怎么要找底层源码的。

探索底层源码出处:

  1. 下断点 : control + in

  2. 符号断点设置:例如alloc  源码
  3. 代码跟踪
  4. 汇编探索

1.断点调试设置

     例如我们使用alloc代码进行下断点 : control + in

     iOS底层探索一

当断点到这里时我们先不做操作,点击键盘中的control键,此时代码进入按键会有变化

iOS底层探索一

此时我们点击框中按钮可以进入到汇编,点击进入

我们可以看到alloc 底层首先会调用objc_alloc方法,当我们继续进入时发现一只是图二,这里就需要讲到我们iOS底层东西了,在我们使用模拟器是,cpu内核使用的x86也就是电脑的架构,而我们手机使用的是armv7 ,armv7s和arm64,arm64E,架构,因为使用不同架构,底层所选择的方法也不一样进入代码也有区别;

iOS底层探索一

iOS底层探索一

所以在这里如果要进入需要选择为真机调试;

iOS底层探索一

修改为真机调试后,我们可以看到alloc进入的是libobjc.A.dylib库中的objc_alloc方法

2.符号断点设置

       这个也是我们xcode中自带的功能,因为alloc方法在初始化是后会有很多调用,所以我们还是需要先让代码运行到[person alloc],之后我们点到添加符号断点出,如下图所示

iOS底层探索一

iOS底层探索一

iOS底层探索一

添加完后,我们可以看到,底层确实有很多alloc方法,此时我们继续执行代码,如下如,依然可以看到底层是调用libobjc.A.dylib库,这里为什调用的是[NSObject alloc]后续再进行详细解释

iOS底层探索一

3.汇编调试

这个也是xcode中的工具,缺点是需要了解部分汇编知识;具体设置,如下图所示xcode中顶部选择Debug->DebugWorkflow->Always Show Disassembly,这里我们运行后就能看到汇编指令了

iOS底层探索一

进入汇编页面如下图所示:

iOS底层探索一

很多人看到这里就会有点懵,这里我们只需要知道一些简单的只是例如:bl 为跳转方法,add为加法运算 sub为减法运算等,这里就不过多赘述了;22行打断点进入;

iOS底层探索一

我们发现依旧进入了我们熟悉的libobjc.A.dylib库;调用的是objc_alloc方法;

以上就是我要介绍的3种看底层实现方法,

这里附上苹果开源代码地址:https://opensource.apple.com/source/

我们要看的alloc方法在0bjc-750中新版本objc-756.2,可以直接下载进行编译通过

 

相关文章:

  • 2021-12-12
  • 2021-06-06
  • 2021-09-04
  • 2021-10-27
  • 2021-07-07
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2020-05-07
  • 2021-08-15
  • 2021-11-11
  • 2021-10-24
  • 2022-12-23
  • 2018-02-11
  • 2018-02-12
相关资源
相似解决方案