当前位置:  开发笔记 > IOS > 正文

发送-release或-drain与自动释放池有什么区别?

如何解决《发送-release或-drain与自动释放池有什么区别?》经验,为你挑选了3个好方法。

在许多书籍和许多网站上,我看到-drain.好吧,对于一个听起来很酷的自动释放池.但它除了发布之外还做了什么吗?我猜--Drain只是让Pool释放所有它的对象,而不释放Pool本身.只是一个猜测.



1> smorgan..:

请注意,对oxigen的回答的评论说-drain不释放NSAutoreleasePool是不正确的.NSAutoreleasePool的文档明确指出-Drain释放(并因此破坏)NSAutoreleasePool.

-drain是对NSAutoreleasePool对象使用-release的替代,唯一的区别是为垃圾收集系统提供了一个提示.



2> oxigen..:

如果您的系统有垃圾收集,那么-drain为GC发送消息(objc_collect_if_needed)

如果你还没有GC,那么drain = release



3> zoul..:

Oxigen是正确的,请参阅方法的文档drain的NSAutoreleasePool:

在引用计数环境中,释放并弹出接收器; 在垃圾收集环境中,如果自上次收集以来分配的内存大于当前阈值,则触发垃圾收集.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有