iOS底层探索一(底层探索方法)

前言

     相关文章:

iOS底层探索二(OC 中 alloc 方法 初探)

iOS底层探索三(内存对齐与calloc分析)

iOS底层探索四(isa初探-联合体,位域,内存优化)

iOS底层探索五(isa与类的关系)  

iOS底层探索六(类的分析上)

iOS底层探索七(类的分析下)

iOS底层探索八(方法本质上)

iOS底层探索九(方法的本质下objc_msgSend慢速及方法转发初探)

iOS底层探索十(方法的本质下-消息转发流程)

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

探索底层源码出处:

  1. 下断点 : control + in

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

1.断点调试设置

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

     

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

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

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

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

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

2.符号断点设置

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

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

3.汇编调试

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

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

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

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

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

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

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

原创文章 88 获赞 21 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZhaiAlan/article/details/104552151