2

医生说:

在垃圾收集环境中,如有必要,向池发送一条耗尽消息会触发垃圾收集;但是,发布是无操作的。在引用计数环境中,drain 与 release 具有相同的效果。因此,通常应该使用排水而不是释放。

如果我做对了,他们说我应该总是使用-drain,不管周围有垃圾收集还是引用计数。在 iPhone 上没有 GC,所以无论如何我发送 -drain?

不幸的是,该文档只谈到了 Cocoa,而不是 Cocoa Touch 或 iPhone。所以我不确定这是否同样适用。

4

3 回答 3

7

没关系,两者的效果是一样的。Apple 建议使用 drain 以防您移动到垃圾收集环境(如果 iPhone SDK 的未来版本支持它,或者如果您将其复制到 Mac OS X 项目),这就是我要使用的。

于 2009-04-28T19:51:57.650 回答
3

只需发送 -drain; 如果在以后的某个日期 iPhone 有 GC,您将能够在不修改的情况下编译它。养成一个好习惯。

于 2009-04-28T19:57:33.457 回答
-3

在正常开发中,不需要在自动释放池上调用 drain - 当您的方法返回时,它无论如何都会这样做。

例外情况是,如果您在循环中创建许多自动释放的对象,并且您有机会提前释放其中一些。

如果您调用 drain 作为 release 的替代品,它不会释放尚未自动释放的对象。

于 2009-04-29T15:07:40.057 回答