3

我是一名 iPhone 开发人员。我在我的应用程序中使用 ARC。我正在分配对象,一旦它的使用结束,我将“nil”分配给它。为了释放内存,我还需要做些什么吗?

还有一种方法,我们可以在 ARC 中显式调用垃圾收集器吗?还有一种方法可以决定何时在 ARC 中释放内存?

4

2 回答 2

8

ARC 不是垃圾收集器——将其视为手动引用计数管理,编译器代表您添加引用计数操作。

您可以做的一件好事是创建一个自动释放池。因为编译器添加了保留、释放和自动释放消息——您的对象最终会在自动释放池中。考虑:

@autoreleasepool {
  ..create several temporary objects...
} // << now the autorelease pool is popped, and delayed release messages are sent

创建自动释放池非常便宜,并且可以真正降低内存消耗并确保及时返回对象的资源。

于 2012-09-07T13:31:49.643 回答
3

ARC 没有垃圾收集,所以没有什么可调用的。如果您控制对象的范围和所有权,ARC 将为您处理内存使用。

除了将“nil”分配给引用或让引用超出范围之外,唯一的其他考虑因素是您是否有一些对对象的额外引用(例如将其放入 NSArray),它有自己的需要保留对象.

于 2012-09-07T13:20:27.937 回答