美文网首页
iOS --源码探索的方法

iOS --源码探索的方法

作者: 周英俊a | 来源:发表于2020-09-18 18:03 被阅读0次

    当我们日常写Bug的时候,想学习下苹果爸爸的源码,却发现只能在外面蹭一蹭,无法深入探索。如下图:

    只能蹭一蹭?.png

    定位源码的三种方法

    查找指定函数的底层源码:本文以Person类的alloc方法为例

    • 符号断点直接跟流程
    • 通过按住control + step into
    • 汇编跟流程

    方法一:符号断点直接跟流程

    • 通过下alloc的符号断点

      • 选择断点Sysbolic Breakpoint

        Add Sysbolic Breakpoint .png
      • 符号断点中输入alloc

        输入符号断点.png

    此时已经给 Person类添加好了断点,需要注意的是:当运行程序前需要将alloc符号断点关闭,因为运行程序,将会有很多类调用alloc。如下图:

    符号断点处于关闭状态.png

    当程序运行到Person类创建初始化这一行代码,将alloc符号断点打开,点击下一步就可以看到添加的符号断点在苹果源码的位置。如下图所示:

    方法处于源码的位置.png

    方法二:control + step into

    如下图所示,在Person创建初始化的地方添加断点,程序运行到这行

    control + step into.png

    按住键盘的control键 + 鼠标点击Xcode日志栏的step into按钮,一下不行就点两下,出现如下图所示

    objc_alloc.png

    如下图所示添加objc_alloc符号断点,就能显示对应函数所在源码库

    第二种方法.png

    方法二:汇编查找

    同样的如下图所示,在Person创建初始化的地方添加断点,程序运行到这行

    汇编查找.png

    然后接着开启Xcode的显示反汇编,如下图所示

    Xcode显示反汇编.png

    接下来就会显示对应的汇编信息,真机和模拟器的汇编信息是不一样的。

    汇编跟流程-真机.png

    接下来同样的添加objc_alloc符号断点,显示对应函数所在源码库

    第三种方法.png

    建议大家使用第三种方法,别问为什么?问就是能装b,接下来会整理一篇简单的汇编知识。

    App提供的源码下载地址:
    1、Apple 所有开源源码汇总地址,根据相应的版本查找对应的源码,以mac 10.15为例: macOS --> 10.15 --> 选择10.15 --> 搜索 objc
    2、Apple 比较直接的源码下载地址,直接搜索想要下载的源码名称即可,例如objc直接搜索 objc --> objc4/ --> 选择相应的objc的版本

    相关文章

      网友评论

          本文标题:iOS --源码探索的方法

          本文链接:https://www.haomeiwen.com/subject/mlxhyktx.html