为什么在使用弱者时使用无主?

时间:2014-06-26 21:11:04

标签: swift

在Swift中,可以选择使用unownedweak。为什么在使用unowned时使用weak?似乎两者几乎相同,weak更安全。

1 个答案:

答案 0 :(得分:9)

Apple says规则如下:

  • 使用weak引用,只要该引用在其生命周期的某个时间点变为nil,该引用即为unowned
  • 当您知道在初始化期间设置引用后永远不会为nil时,请使用无主引用。

首先使用weak的原因是unowned必须是可选类型,而weak将是非可选的。这使您可以避免解包和/或检查,这与可选类型的变量相关联。

两种引用都具有相同的成本:Swift会跟踪它们,以便它可以设置nilunowned的引用,并且当它们引用的对象时标记{{1}}引用无效被毁了。