我刚开始从事一个相对复杂的项目,并且发现了一个错误。当用户注销时, View Controller 仍然分配在登录 View Controller 后面。他们继续响应旋转事件等。我已将 Controller 设置为 nil
注销时,但它仍在响应,这表明其他一些对象仍然有指向它的指针。 (该项目启用了 ARC。)
ARC 前我可能会 solve this by overriding retain
:
- (id) retain
{
// Break here to see who is retaining me.
return [super retain];
}
如何使用 Xcode 调试工具选择一个对象并列出指向它的所有其他对象?有没有比简单地搜索所有代码更好的方法?
最佳答案
从 Xcode 8 开始,您可以使用调试内存图:
运行您的应用并查看屏幕底部的导航器。您应该看到一组三个相连的圆圈:
导航到任何地方,以便在内存中分配您的对象,然后点击此图标。它应该会暂停您的应用程序,并且会在您的 Xcode 屏幕上弹出一个图表。现在,在屏幕的左侧,您可以看到一个对象列表。找到您想要查看所有指向的对象并单击它。现在它们应该在图中可见。您可以通过点击分支左端节点上的两个箭头来展开这些分支。该图应如下所示:
这确实节省了我几天的工作时间。这是一个非常有用的工具。我希望它也能帮助其他人。
关于ios - Xcode 调试/仪器 : See all pointers to an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587666/