美文网首页
WEAK 和 UNOWNED

WEAK 和 UNOWNED

作者: limbo_lyn | 来源:发表于2018-12-21 11:34 被阅读0次

    相同

    1、weak和unowned都不会增加引用计数器

    2、两者都是为了避免循环引用而存在的

    区别

    1、weak指向的对象引用计数器为0时,weak为会自动赋值为nil,此时调用不会发生任何时

    而unowned 并不会自动赋值nil,因此调用时,有可能调用对象本身(内存被释放,但是并没有重置),也有可能调用到野指针,不安全

    2、unowned 不是可选类型,因此不需要判断strongself,即可使用,一般用于赋值

    weak是可选的类型,因此需要判断strongself

    总结

    一般情况下 weak即可,只是在需要用到weak的赋值时,需要判断strongself

    但是,如果使用环境下能判断对象一定没有被释放,使用unowned也会更方便,一般在按钮的响应事件中

    快速使用方式

    {  [unowned self, weak someObject]

        #code

    }

    参考

    内存管理,WEAK 和 UNOWNED

    相关文章

      网友评论

          本文标题:WEAK 和 UNOWNED

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