美文网首页
Swift strong、weak、unowned的区别

Swift strong、weak、unowned的区别

作者: ChancePro | 来源:发表于2018-11-27 23:11 被阅读16次

strong代表强引用,是默认属性。

当一个对象被声明为strong时,就表示父层级对该对象有一个强引用的指向。此时该对象的引用计数会增加1。

weak代表弱引用。

当对象被声明为weak时,父层级对此对象没有指向,该对象的引用计数不会增加1。它在对象释放后弱引用也随即消失。继续访问该对象,程序会得到nil,不会崩溃。

unowned与弱引用本质上一样。

唯一不同的是,对象在释放后,依然有一个无效的引用指向对象,它不是Optional也不指向nil。如果继续访问该对象,程序就会崩溃。

weak和unowned的使用场景

  • 当访问对象可能已经被释放了,则用weak。比如delegate的修饰。
  • 当访问对象确定不可能被释放,则用unowned。比如self的引用。
  • 为了安全起见,很多公司规定任何时候都使用weak去修饰。

相关文章

网友评论

      本文标题:Swift strong、weak、unowned的区别

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