返回

iOS底层探索:Alloc原理之对象

IOS

探索前的准备

在探索Alloc原理之前,我们需要先进行一些准备工作,以确保我们能够顺利进行探索。

1. 了解使用

首先,我们需要了解如何使用一些基本的工具和技巧来帮助我们探索Alloc原理。这些工具和技巧包括:

  • 设置符号断点:我们可以使用符号断点来在特定的符号(例如objc_alloc)处设置断点,以便在程序执行到该符号时停止执行,从而让我们有机会检查内存状态和变量值。
  • 查看堆栈:我们可以使用堆栈视图来查看程序执行时的堆栈情况,包括当前正在执行的函数、调用顺序等信息。
  • 开启汇编跟流程:我们可以开启汇编跟流程,以便在程序执行时看到汇编代码和寄存器值的变化情况。
  • 断点后按步查看底层:在程序执行到断点处后,我们可以按步查看底层,以便了解程序是如何一步步执行的。

2. 查看底层的方法

我们可以通过以下几种方法来查看Alloc的底层实现:

  • 使用符号断点:我们可以使用符号断点来在objc_alloc函数处设置断点,以便在程序执行到该函数时停止执行,从而让我们有机会检查函数的参数和返回值。
  • 使用汇编跟流程:我们可以开启汇编跟流程,以便在程序执行到objc_alloc函数时看到汇编代码和寄存器值的变化情况。
  • 断点后按步查看底层:在程序执行到objc_alloc函数处后,我们可以按步查看底层,以便了解函数是如何一步步执行的。

Alloc原理

在了解了必要的准备工作之后,我们可以开始探索Alloc原理了。

1. 符号断点

我们可以使用符号断点来在objc_alloc函数处设置断点,以便在程序执行到该函数时停止执行。当程序执行到断点处时,我们可以检查函数的参数和返回值。

(lldb) br s -n objc_alloc
Breakpoint 1: where = xxx, address = 0x107f64770

2. 汇编跟流程

我们可以开启汇编跟流程,以便在程序执行到objc_alloc函数时看到汇编代码和寄存器值的变化情况。

(lldb) thread backtrace -i 1
frame #0: 0x0000000107f64770 libobjc.A.dylib`objc_alloc + 20
frame #1: 0x00000001079d3308 CoreFoundation`-[NSObject class] + 8

3. 断点后按步查看底层

在程序执行到objc_alloc函数处后,我们可以按步查看底层,以便了解函数是如何一步步执行的。

(lldb) n
-- Type <Expression> for debugger command (RETURN to skip): po $rdi
(int) $0 = 32

结语

通过以上探索,我们对Alloc原理有了一个更深入的了解。我们了解了如何使用符号断点、汇编跟流程和断点后按步查看底层的方法来探索Alloc原理。我们还了解了objc_alloc函数是如何工作的。希望这篇文章对您有所帮助。