我刚刚开始做一个相对复杂的项目,并发现了一个bug。当用户注销时,视图控制器仍然分配在登录视图控制器之后。它们继续响应旋转事件,等等。我已经在注销时将控制器设置为nil,但它仍然在响应,这表明其他对象仍然有指向它的指针。(此项目启用了ARC。)
ARC前I可能会solve this by overriding retain
- (id) retain
{
// Break here to see who is retaining me.
return [super retain];
}如何使用Xcode调试工具选择一个对象并列出指向该对象的所有其他对象?有没有比简单地搜索所有代码更好的方法呢?
发布于 2013-01-30 01:49:23
Instruments Heapshot Analysis工具是我能找到的最好的工具。This article provides a more complete tutorial,但基本步骤是:
按展开三角形以查看其内存地址右侧的箭头以查看其负责的调用者(它出现在最右侧的列中)。
如果其他人写了更详细的解释,或者可以提供任何相关的lldb命令,我很乐意将您的答案标记为正确。
发布于 2016-11-01 05:27:30
从Xcode 8开始,您可以使用调试内存图:
运行您的应用程序并查看屏幕底部的导航器。您应该会看到一组三个相连的圆:

导航到在内存中分配对象的位置,然后点击此图标。它应该会暂停你的应用程序,并在你的Xcode屏幕上弹出一个图形。现在,在屏幕的左侧,您可以看到对象列表。找到要查看所有指针的对象,然后单击它。现在,它们应该在图形中可见。您可以通过点击分支左端节点上的两个箭头来展开这些分支。图表应该如下所示:

这确实节省了我几天的工作时间。这是一个非常有用的工具。我希望这对其他人也有帮助。
https://stackoverflow.com/questions/14587666
复制相似问题