热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

嵌套的autoreleasePool只有最里层的pool会引用其中的对象

在没有手加AutoreleasePool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个r


        在没有手加Autorelease Pool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的,

而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop。


       在嵌套的autoreleasePool中,只有最里层的pool使对象的引用计数加1。

反过来说就是最里层的pool会阻止外层的pool对对象的引用。


       这样就可以解释为什么如果方法里面,如果有大循环的话,应该对循环加autoReleasePool,

因为这个pool阻止了RunLoop的一次迭代中加入的pool对对象的引用。

这样在一次循环结束后,在循环中创建的变量就会被释放。

推荐阅读
author-avatar
琪琪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有