医生说:
在垃圾收集环境中, 向游泳池发送排水消息 触发垃圾收集if 必要;然而,释放是一个 无操作。在参考计数 环境,排水也有同样的效果 作为释放。因此,通常,你 应该使用排水而不是释放。
如果我做对了,他们说我应该总是使用-drain,无论周围有垃圾收集还是引用计数都没关系。在iPhone上没有GC,所以无论如何我发送-drain?
不幸的是,该医生只讨论过Cocoa,而不是Cocoa Touch或iPhone。所以我不确定那里是否适用。
答案 0 :(得分:7)
这并不重要,它们都具有相同的效果。如果你搬到垃圾收集环境(如果iPhone SDK的未来版本支持它,或者你将它复制到Mac OS X项目中),Apple建议使用drain,这就是我的用途。
答案 1 :(得分:3)
发送-drain;如果在以后某个日期iPhone有GC,你就可以编译它而无需修改。这是一个很好的习惯。
答案 2 :(得分:-3)
在正常开发中,不需要在自动释放池上调用耗尽 - 无论如何,当你的方法返回时,它都会这样做。
例外情况是,如果你在循环中创建了许多自动释放的对象,并且你有机会在之前释放其中的一些。
如果您将drain作为release的替代品,它将不会释放尚未自动释放的对象。