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

时间:2012-09-07 12:44:13

标签: ios ios5 memory-management memory-leaks automatic-ref-counting

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

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

2 个答案:

答案 0 :(得分:8)

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

您可以做的一件好事是创建一个自动释放池。因为编译器添加了retain,release和autorelease消息 - 所以对象最终会出现在自动释放池中。考虑:

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

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

答案 1 :(得分:3)

ARC没有垃圾回收,因此无需调用。如果您控制对象的范围和所有权,ARC将为您提供内存使用。

除了将'nil'赋值给引用或让引用超出范围外,唯一的另一个考虑因素是你是否对该对象有一些额外的引用(例如将它放入NSArray中),它有自己的需要保留对象。