在许多书籍和许多网站上,我看到-drain.好吧,对于一个听起来很酷的自动释放池.但它除了发布之外还做了什么吗?我猜--Drain只是让Pool释放所有它的对象,而不释放Pool本身.只是一个猜测.
请注意,对oxigen的回答的评论说-drain不释放NSAutoreleasePool是不正确的.NSAutoreleasePool的文档明确指出-Drain释放(并因此破坏)NSAutoreleasePool.
-drain是对NSAutoreleasePool对象使用-release的替代,唯一的区别是为垃圾收集系统提供了一个提示.
如果您的系统有垃圾收集,那么-drain为GC发送消息(objc_collect_if_needed)
如果你还没有GC,那么drain = release
Oxigen是正确的,请参阅方法的文档drain
的NSAutoreleasePool:
在引用计数环境中,释放并弹出接收器; 在垃圾收集环境中,如果自上次收集以来分配的内存大于当前阈值,则触发垃圾收集.