在Swift中,可以选择使用unowned
或weak
。为什么在使用unowned
时使用weak
?似乎两者几乎相同,weak
更安全。
答案 0 :(得分:9)
Apple says规则如下:
weak
引用,只要该引用在其生命周期的某个时间点变为nil
,该引用即为unowned
。首先使用weak
的原因是unowned
必须是可选类型,而weak
将是非可选的。这使您可以避免解包和/或检查,这与可选类型的变量相关联。
两种引用都具有相同的成本:Swift会跟踪它们,以便它可以设置nil
对unowned
的引用,并且当它们引用的对象时标记{{1}}引用无效被毁了。