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

Boo*_*oon 3 swift

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

das*_*ght 9

Apple表示规则如下:

  • weak只要对该引用有效的引用nil在其生命周期中的某个时刻使用引用.
  • 当您知道在初始化期间设置引用后永远不会为nil时,请使用无主引用.

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

两种引用都具有相同的成本:Swift跟踪它们,以便它可以设置weak引用nil,并在unowned引用的对象被销毁时标记引用无效.