我正在使用 ARC。我有一个在我编写的游戏结束时运行的方法,它应该清除内存。中有一系列对象NSMutableArray
,我使用removeObject:
. 然后我将这些对象设置为nil
. 但是,NSLog
在这些对象上使用表明它们仍然存在。为什么将它们设置为nil
不将它们从内存中删除?
问问题
220 次
1 回答
1
在 ARC(自动引用计数)中,将对象的引用设置为nil
意味着两种不同的事情,具体取决于您正在使用的引用类型:
如果是
strong
引用,则 nil-ing 表示减少被引用对象的引用计数;如果它是一个
weak
引用,nil-ing 它什么也不做。
因此,nil-ing 会导致不同的结果。具体来说,只有当引用计数变为零时,才会释放对象。这对应于系统中没有其他对象拥有第一个对象的情况(这意味着持有strong
对它的引用)。
因此,在您的情况下,可能有一些其他对象保留strong
对您尝试的对象的引用nil
;或者,您可能正在 nil 一个弱引用。如果您显示一些代码,它可能会变得更清晰。
于 2013-01-07T10:11:09.190 回答