在许多书籍和许多网站上,我看到 -drain。好吧,对于一个听起来很酷的自动释放池。但它除了发布之外还有其他作用吗?我猜 -drain 只是让 Pool 释放它的所有对象,而不释放 Pool 本身。只是一个猜测。
问问题
11296 次
3 回答
25
请注意,关于 oxigen 答案的评论说 -drain 不会释放 NSAutoreleasePool 是不正确的。NSAutoreleasePool的文档清楚地表明 -drain 释放(并因此破坏)NSAutoreleasePool。
-drain 是对 NSAutoreleasePool 对象使用 -release 的替代品,唯一的区别是它为垃圾收集系统提供了提示。
于 2009-04-28T18:25:51.227 回答
10
如果您的系统有垃圾收集,则 -drain 发送消息 (objc_collect_if_needed) 用于 GC
如果你没有 GC,那么 drain = release
于 2009-04-28T11:33:55.477 回答
10
Oxigen 是对的,请参阅NSAutoreleasePooldrain
方法的文档:
在引用计数环境中,释放和弹出接收器;在垃圾收集环境中,如果自上次收集后分配的内存大于当前阈值,则触发垃圾收集。
于 2009-04-28T11:45:03.000 回答