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

来源:互联网 发布:东莞软件测试学费 编辑:程序博客网 时间:2024/06/05 19:58

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

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


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

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


       这样就可以解释为什么如果方法里面,如果有大循环的话,应该对循环加autoReleasePool,
因为这个pool阻止了RunLoop的一次迭代中加入的pool对对象的引用。
这样在一次循环结束后,在循环中创建的变量就会被释放。
阅读全文
0 0
原创粉丝点击