Swift闭包里强弱引用的那些陷阱和奥秘

Posted 大熊猫侯佩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift闭包里强弱引用的那些陷阱和奥秘相关的知识,希望对你有一定的参考价值。



问题现象

众所周知,Swift是一门安全的语言,至少比ObjC要安全。不过这篇文章里我们不会聊ObjC的ARC机制、也不谈怎么用Swift捣鼓低层指针那些事,我们只谈Swift里大家无时不刻都在使用的功能:

引用循环与闭包中的强弱引用。

即使是Swift“久经沙场”的老鸟也不敢保证能完全了解这方面的内容,更别说新手们了。

不过别担心,看完本篇后你对Swift中闭包中的“强弱”引用、引用循环等知识将会有全新的认识。

在本篇博文中,您将学到以下内容:

  • 为什么要在闭包中加上[weak self] 和[unowned self]?它们有什么区别?
  • 是不是闭包中总是要加上[weak self]?
  • 在闭包中除了用[weak/unowned self] 还有其它消除引用循环的方法吗?
  • 在闭包中强引用对象的两种方法。
  • 不会造成循环引用的值类型在闭包中使用真的是人畜无害吗?

还等什么呢?就让虎年里虎虎生风的我们一起来揭晓问题的谜底吧!

以上是关于Swift闭包里强弱引用的那些陷阱和奥秘的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 22)——闭包那些事儿!

闭包那些事

Swift之常见闭包与defer关键字的使用分析和闭包中的循环引用

Swift:闭包(Closures)

swift中闭包的循环引用

第18课 捕获机制及陷阱