gpt4 book ai didi

objective-c - 在 ARC 下的 Cocoa 中,我可以获得引用另一个对象的对象列表(以编程方式或使用仪器)?

转载 作者:搜寻专家 更新时间:2023-10-30 20:05:19 24 4
gpt4 key购买 nike

我正在调试我的 Cocoa 应用程序并注意到使用 Instruments.app 分配配置文件模型对象图没有像我预期的那样解除分配。基本上当我从我的 NSDocument 中删除一个根模型对象时,我期望该对象的整个对象图被释放。这并没有发生,这意味着在应用程序的其他地方存在对我的根模型对象的强引用。

是否有可能以编程方式或使用 Instruments.app 获取引用 Cocoa 中特定对象的对象列表?如果我能知道强引用在哪里,这将有助于调试这个问题。

我发现了这个类似的问题,How to get the reference count of an NSObject? ,但这只是说明有多少个引用,而不是哪些对象持有引用。

最佳答案

不是这样的。存储在运行进程内部的唯一信息是对象的保留次数(“保留”被调用的次数与“释放”被调用的次数之和)。这与引用数(指向内存的“强”指针数)不同。大多数内存位置在 Cocoa 中没有指向它们的边表。

在 Instruments 中,您可以打开“记录引用计数”并查看保留计数在任何地方的增加或减少。参见 Instruments Allocations track alloc and dealloc of objects of user defined classes对于如何做到这一点的一个很好的解释。这不会告诉您在哪里犯了错误,但会告诉您保留发生在何处。

关于objective-c - 在 ARC 下的 Cocoa 中,我可以获得引用另一个对象的对象列表(以编程方式或使用仪器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com