博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NSAutoReleasePool使用中drain和release的区别
阅读量:7222 次
发布时间:2019-06-29

本文共 665 字,大约阅读时间需要 2 分钟。

虽然ARC引入之后NSAutoReleasePool的使用有了很大变化,但是了解NSAutoReleasePool的机制还是十分必要的,下面主要说一下: NSAutoReleasePool * pool = [NSAutoReleasePool alloc] init]; //do something 之后, [pool drain] 和 [pool release] 的区别: release,在引用计数环境下,由于NSAutoReleasePool是一个不可以被retain的类型,所以release会直接dealloc pool对象。当pool被dealloc的时候,pool向所有在pool中的对象发出一个release的消息,如果一个对象在这个pool中autorelease了多次,pool对这个对象的每一次autorelease都会release。在GC环境下release是一个no-op操作(代表没有操作,是一个占据进行很少的空间但是指出没有操作的计算机指令)。 drain,在引用计数环境下,它的行为和release是一样的。在GC的环境下,这个方法调用objc_collect_if_needed出发GC。 因此,重点是:在GC环境下,release是一个no-op,所以除非你不希望在GC环境下出发GC,你都应该使用drain而不是使用release来释放pool。

转载于:https://www.cnblogs.com/wanyakun/archive/2012/11/08/3403322.html

你可能感兴趣的文章
poj 3615(floyd变形)
查看>>
缓存子系统如何设计(Cachable tag, Memcache/redis support, xml config support, LRU/LFU/本地缓存命中率)...
查看>>
解决数据库 Table 'content_tags' is marked as crashed and should be repaired 表损坏问题
查看>>
算法-随手写的二分查找
查看>>
测量史上首个易语言工程测量模块
查看>>
面向对象初步总结
查看>>
分享45个设计师应该见到的新鲜的Web移动设备用户界面PSD套件
查看>>
SDL_BlitSurface
查看>>
Ubuntu12.04编译Android2.3.4
查看>>
IDA设置函数类型
查看>>
日期控件ie9失效
查看>>
群里一个高手写的url?传参执行php函数的小程序, 收藏下
查看>>
Linux桌面扩展 Docky
查看>>
Android实现图片顺时逆时旋转及拖拽显示效果
查看>>
四款常见数据库比较同步软件汇总
查看>>
java中相同名字不同返回类型的方法
查看>>
北京出dell s2740显示器 1900 - V2EX
查看>>
怎么在VS监视DataSet类型的数据
查看>>
JS事件监听器
查看>>
解决flash web浏览器弹出窗口被拦截的问题
查看>>