如何查看哪些对象保留了另一个特定对象
Posted
技术标签:
【中文标题】如何查看哪些对象保留了另一个特定对象【英文标题】:How to see which objects is retaining another specific object 【发布时间】:2015-04-18 09:56:16 【问题描述】:我有一个NSOutlineView
,当从屏幕上删除时应该是dealloc
,但由于没有发生这种情况,我怀疑另一个对象正在持有对它的引用。
是否可以查看Xcode
或Profiler
中有多少references
以及哪些对象引用了object/view
?
编辑:虽然我确实找到了另一个解决方案,但我仍然想知道是否有任何东西可以查看持有(保留)某个对象/视图的对象列表
【问题讨论】:
这能回答你的问题吗? ***.com/q/26127649/92610 这确实为我指明了正确的方向,我的问题现在已经解决了。谢谢。 那我要把这个问题标记为重复。 【参考方案1】:您永远无法获得“保留某个对象的对象”的列表,因为 refcount 只是一个计数 - 在保留和释放之间没有 FIFO 或 LIFO 或任何类型的直接匹配 -这只是一个计数。
您可以做的是使用 Instruments 显示负责对您的对象进行保留调用和释放调用的所有对象的列表。使用分配工具,确保选中“记录引用计数”。然后,您可以使用统计视图查看正在运行的应用程序中的所有活动对象。单击任何对象右侧的小右箭头以查看该对象的保留/释放调用表。在这里您可以看到引用计数的上升和下降,并希望找到“神秘地”保留和/或不释放的对象。
一些常见的过度保留问题是:代表需要是弱属性,b。需要取消注册视图控制器或窗口控制器中的任何观察者,c。插入视图层次结构时会保留视图。
【讨论】:
很好的解释。此外,您的分配工具快速指南实际上让我更好地了解了它的使用。以上是关于如何查看哪些对象保留了另一个特定对象的主要内容,如果未能解决你的问题,请参考以下文章