IOS底层(二): 源码探索

OC底层源码/原理合集

我们做项目时候, 我们希望快速查到指定源码, 所以快速的找到"指定"源码非常重要

拿一份普普通通项目举例


example

例如 我们想知道 alloc方法在哪个源码里面

alloc

control + 点击 进入

alloc cliclk

在这里我们发现无从下手。 为什么呢? 我们找的姿势不对
比如我们想找 alloc 源码

方法1 符号断点

选择断点 → 点击左下角" + " → Symbolic Breakpoint

exp1.1

这里比如我们想知道alloc 源码位置, 那么就输入alloc

exp1.2

选完运行, 会看到这样


exp1.3

哪个是我们想要找的呢? 因为程序中很多地方都有用到alloc

所以, 我们还要多加个断点

现在我们先要定位的alloc 处加断点


exp1.4

运行程序, 断在普通断点的地方之后, 我们再加符号断点, 当然我们也可以通过打开关闭符号断点进行此操作

exp1.5

我们点击继续运行, 可看到

exp1.6
exp1.7

上面图片可以看出alloclibobjc.A.dylib库中, 苹果开发者相应的开源网址下载对应库源码进行探索即可

方法2 Step into点击查找

还是拿alloc举例 先点一个普通断点, 运行, 断点断到这里


2.1

通过control + step into 继续查找

2.2

点击之后显示


2.3

这时候我们再加个objc_alloc符号断点, 点击Continue program execution继续执行

2.4

可以看到进入了libobjc.A.dylib中的objc_alloc函数,由此可知alloc方法的源码在libobjc.A.dylib库中。

方法3 汇编方法

老地方加断, 断到这里


3.1

依次DebugDebug WorkflowAlways Show Disassembly

3.2
3.3

通过control + step into 到 objc_alloc

3.4

再点击control + step into 可看到

3.5

这时候我们再加个objc_alloc符号断点, 点击Continue program execution继续执行

2.4

可以看到进入了libobjc.A.dylib中的objc_alloc函数,也一样知道alloc方法的源码在libobjc.A.dylib库中。

你可能感兴趣的:(IOS底层(二): 源码探索)