为什么要排出自动释放池而不是释放它?

时间:2010-09-07 17:55:24

标签: iphone objective-c cocoa macos

为什么要排出自动释放池而不是释放它?

2 个答案:

答案 0 :(得分:5)

一个原因是垃圾收集(在iPhone上不可用)

release是一个启用GC的无操作,但drain提供了垃圾收集器的提示

来自docs

  

垃圾收集

     

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

答案 1 :(得分:-2)

这里最好的答案是“因为Apple告诉你”。

遵循Apple的“最佳实践”是提高向前兼容机会的最佳方式。