为什么要使用unowned,当你可以使用weak呢?

34 浏览
0 Comments

为什么要使用unowned,当你可以使用weak呢?

在Swift中,有使用unownedweak的选项。为什么要使用unowned,而不是使用weak?看起来这两者几乎相同,只是weak更安全。

0
0 Comments

为什么在可以使用weak的情况下要使用unowned?

在Swift中,使用weak引用时,引用可以在其生命周期内的某个时刻变成nil,而使用unowned引用时,一旦在初始化时设置了引用,就知道该引用永远不会为nil。

之所以需要unowned引用,是因为weak必须是可选类型,而unowned则是非可选类型。这样可以避免与可选类型的变量相关的解包和检查。

无论是weak引用还是unowned引用,都需要Swift跟踪它们的状态。这样当对象被销毁时,Swift可以将weak引用设置为nil,并在访问一个已释放对象的unowned引用时引发运行时错误。

因此,尽管使用unowned引用不需要设置为nil,但Swift仍然需要跟踪这些引用的状态,以便在需要时引发运行时错误。

0