0

我正在使用 ARC。我有一个在我编写的游戏结束时运行的方法,它应该清除内存。中有一系列对象NSMutableArray,我使用removeObject:. 然后我将这些对象设置为nil. 但是,NSLog在这些对象上使用表明它们仍然存在。为什么将它们设置为nil不将它们从内存中删除?

4

1 回答 1

1

在 ARC(自动引用计数)中,将对象的引用设置为nil意味着两种不同的事情,具体取决于您正在使用的引用类型:

  1. 如果是strong引用,则 nil-ing 表示减少被引用对象的引用计数;

  2. 如果它是一个weak引用,nil-ing 它什么也不做。

因此,nil-ing 会导致不同的结果。具体来说,只有当引用计数变为零时,才会释放对象。这对应于系统中没有其他对象拥有第一个对象的情况(这意味着持有strong对它的引用)。

因此,在您的情况下,可能有一些其他对象保留strong对您尝试的对象的引用nil;或者,您可能正在 nil 一个弱引用。如果您显示一些代码,它可能会变得更清晰。

于 2013-01-07T10:11:09.190 回答