ios - Xcode 调试/仪器 : See all pointers to an object

标签 ios objective-c xcode instruments

我刚开始从事一个相对复杂的项目,并且发现了一个错误。当用户注销时, 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 开始,您可以使用调试内存图:

运行您的应用并查看屏幕底部的导航器。您应该看到一组三个相连的圆圈:

enter image description here

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

enter image description here

这确实节省了我几天的工作时间。这是一个非常有用的工具。我希望它也能帮助其他人。

关于ios - Xcode 调试/仪器 : See all pointers to an object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14587666/

相关文章:

ios - AFHTTPRequestOperation 与 AFHTTPRequestOperationManager

ios - 如何在 iOS 7 中实现搜索栏。搜索工作正常,但加载的结果内容与搜索结果不对应

iphone - 为XCODE项目(IPHONE)配置tesseract

ios - iCloud 音乐库和音乐播放应用程序 : How?

ios - Apple Watch App - 基于页面的应用程序和分层应用程序的混合方法

ios - UITableview大量图片

ios - SpriteKit SKEmitternode Targetnode 修改整个Node

ios - 如何阻止 iOS 7 控制中心控制音乐应用程序?

ios - 如何在 Xcode 构建完成时设置警报?

iphone - 尝试在 iOS 设备上运行应用程序时出现 Xcode 配置文件问题