美文网首页
AutoreleasePool 内部逻辑

AutoreleasePool 内部逻辑

作者: 处处闻笛鸟花落知多少谁知 | 来源:发表于2016-05-24 15:05 被阅读32次

    参考sunnyxx的http://blog.sunnyxx.com/2014/10/15/behind-autorelease/

    C++实现的一个类 AutoreleasePoolPage

    @autoreleasepool{}     转化为如下代码

    void *context = objc_autoreleasePoolPush();  //context 就是哨兵地址

    // {}中的代码

    objc_autoreleasePoolPop(context);  //release context之后的所有autoreleased的obj

    在没有手加Autorelease Pool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop

    手加Autorelease Pool的情况下,就是@autoreleasepool{} 右括号之后

    相关文章

      网友评论

          本文标题:AutoreleasePool 内部逻辑

          本文链接:https://www.haomeiwen.com/subject/ibezrttx.html