[pool release]和[pool drain]有什么区别?

时间:2011-08-21 16:10:02

标签: objective-c

  

可能重复:
  What's the difference between sending -release or -drain to an Autorelease Pool?

我总是想知道[pool release]和[pool drain]之间的区别..

当我们在IOS中创建基于视图的应用程序时,请使用[pool release]。

当我们在MAX OS X中创建命令行工具时,请使用[pool drain]。

为什么要以不同方式使用它们?

3 个答案:

答案 0 :(得分:7)

来自documentation

  

在垃圾收集环境中,不需要自动释放   池。但是,您可以编写一个旨在使用的框架   垃圾收集和参考计数环境。在这   例如,您可以使用自动释放池来提示收集器   收集可能是适当的。在垃圾收集环境中,   向池中发送排出消息会触发垃圾回收   必要;然而,释放是一种无操作。在参考计数   环境,排水与释放效果相同。通常情况下,   因此,你应该使用排水而不是释放。

答案 1 :(得分:6)

除非您在OSX上使用垃圾收集,否则没有区别。在没有GC的iOS和OSX上完全相同。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSAutoreleasePool_Class/Reference/Reference.html

答案 2 :(得分:3)

已经解释了差异in this post。基本上,如果你没有垃圾收集,那么排水与释放相同。