检查对象引用计数的简单方法

pea*_*ype 2 memory debugging xcode ios swift

在使用 Xcode 和 Swift 的 iOS 项目中,是否有一种简单的方法来检查对象的引用计数?自动引用计数 (ARC) 通常为我们处理内存管理,但我无法跟踪应用程序中的内存泄漏。我想要一种简单的方法来检查应用程序生命周期中任何给定点的任何对象的引用计数。有没有一种简单的方法可以做到这一点?

pea*_*ype 6

我找到了一种使用 LLDB 调试器控制台命令的简单方法。如果有人知道检查对象引用计数的另一种好方法,请随意留下另一个答案。

脚步

首先,当您想要检查某个对象的引用计数时,使用断点在代码中的某个点暂停执行。控制台将显示(lldb)。单击它旁边以插入光标。

lldb 控制台提示

键入language swift refcount array(其中“array”是我要检查的对象的名称;替换为您自己的对象的名称),然后按 Return。控制台将以这种格式输出对象的引用计数:

refcount data: (strong = 1, unowned = 0, weak = 0)

有关调试器命令的更多信息

输入help以查看更多控制台命令。有很多。我已经使用 Xcode 五年了,今天才知道。这可以是一个超级有用的调试工具。仅供参考,这里有一些最有用的:

po self 代表“打印对象”。打印一个很好的对象描述。我只是在这里以“自我”为例。您可以替换您自己的对象的名称。

p self “打印”命令。作为打印对象,但更冗长。再次以“self”为例。

step 推进一行代码。

continue 恢复程序执行。

expr “表达式”命令。允许您输入 Swift 代码来修改变量。例如,向数组对象添加一些数据: expr array.insert(343, at: 0) 您甚至可以通过这种方式更改 UI 元素,如下例所示: expr self.view.tintColor = UIColor.red


Bru*_*nha 5

只需po CFGetRetainCount(someVariable)在 lldb 上输入

来源:https : //developer.apple.com/documentation/corefoundation/1521288-cfgetretaincount