美文网首页
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

相关文章

  • [译]Swift中的weak self和unowned self

    在找关于weak和unowned方面的知识,看到的一篇文章。 原文来自Weak self and unowned ...

  • Swift 内存管理,weak 和 unowned

    在内存管理中,weak和unowned都可以防止发生引用循环问题,但是weak和unowned的区别在哪里呢? u...

  • unowned和weak的区别—swift

    weak引用和unowned引用有些类似但不完全相同。Unowned 引用,像weak引用一样,不会增加对象的引用...

  • 内存管理

    三种引用 weak unowned的使用限制 weak unowned只能用在类实例上面 协议遵守AnyObjec...

  • weak和unowned

    一、循环引用 如图所示的情况中,john指向的对象强引用了unit4A指向的对象,而unit4A指向的对象又强引用...

  • weak和unowned

    unowned: 假设引用对象在生命周期总是存在,这样其属性声明是非可选类型。 weak: 对象在预见时间内可能为...

  • WEAK 和 UNOWNED

    相同 1、weak和unowned都不会增加引用计数器 2、两者都是为了避免循环引用而存在的 区别 1、weak指...

  • Swift中关于unowned的坑

    “Like a weak reference, an unowned reference does not kee...

  • [Swift Tips 读书笔记]从 Objective-C 到

    @objc 和 dynamic 可选协议和协议扩展 内存管理,weak 和 unowned @autoreleas...

  • Swift weak和unowned

    弱引用和无主引用 在闭包和捕获的实例总是互相引用并且总是同时释放时,将闭包内的捕获定义为无主引用。 相反,在被捕获...

网友评论

      本文标题:WEAK 和 UNOWNED

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