美文网首页
autorelease相关

autorelease相关

作者: 埃辛诺斯忍 | 来源:发表于2021-01-26 15:46 被阅读0次

    整理一下自己学到的知识,方便以后查看

    不手动指定autoreleasepool的前提下,一个autorealese对象在什么时刻释放?(比如在一个vc的viewDidLoad中创建)

    分两种情况:手动干预释放时机、系统自动去释放。

    • 手动干预释放时机--指定autoreleasepool 就是所谓的:当前作用域大括号结束时释放。

    • 系统自动去释放--不手动指定autoreleasepool
      Autorelease对象会在当前的 runloop 迭代结束时释放。

    如果在一个vc的viewDidLoad中创建一个 Autorelease对象,那么该对象会在 viewDidAppear 方法执行前就被销毁了。

    苹果是如何实现autoreleasepool的?

    autoreleasepool以一个队列数组的形式实现,主要通过下列三个函数完成.

    objc_autoreleasepoolPush

    objc_autoreleasepoolPop

    objc_aurorelease

    看函数名就可以知道,对autorelease分别执行push,和pop操作。销毁对象时执行release操作。

    相关文章

      网友评论

          本文标题:autorelease相关

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