【发布时间】:2011-06-24 11:59:06
【问题描述】:
在我的应用程序中,我的视图中漂浮着随机对象,我认为我通过 [NSMutableArray replaceObjectAtIndex:index withObject:newObject] 删除了这些对象 但事实证明,在我设置 alpha = 0.5 之后,那些被替换的旧对象仍然存在。由于我使用的是带有 ARC 的新 xcode 4,因此我无法检查这些对象是否未能解除分配或其他问题。 那么,xcode 4(是新的)中是否有任何技术或命令可以帮助进行此类调试?
另外,在 xcode 4 中,从视图中删除一个对象会删除它吗?我使用 [object.view removeFromSuperView] 将它们移出视图,但我不知道它们是否仍然存在于其他地方,导致内存泄漏。
【问题讨论】:
-
如果它们仍然可见,则它们没有被正确地从它们的超级视图中移除。
-
我还没有开始使用 ARC,但是在 ARC 之前的时代,内置的 clang“分析”功能会报告这样的事情。
-
Mike:当我将它们从超级视图中移除时,它们就会消失。但问题是:仅仅因为你看不到它,这是否意味着它被释放了? Dan:我该如何进行(查找和)使用“分析”?
-
另外,我的印象是 NSMutableArray ReplaceObject 释放了被替换的对象。有没有人知道它是否是一个事实?
-
从 NSMutableArray 中移除一个对象,不管你怎么做,释放那个对象。是不是dealloc的它,完全取决于是否有其他的引用。如果您不清楚 release 和 dealloc/"delete" 之间的区别,我建议您阅读(或重新阅读)Apple 的内存管理文档。
标签: objective-c xcode xcode4 nsmutablearray