swift中的无主引用

和weak关键字不同的是,unowned声明的只能定义为非可选类型。在属性变量前加unowned,可以声明一个无主引用。

因为是可选类型,因此当使用无主引用的时候,不需要展开,可以直接访问。不过费可选类型不能赋值为nil。因此当实例销毁的时候,ARC无法将引用赋值为nil。

因此:

weak的作用:

Person和Apartment的例子说明了下面的场景:两个属性的值都可能是nil,并有可能产生强引用环。这种场景下适合使用弱引用。

unowned的作用:

Customer和CreditCard的例子则说明了另外的场景:一个属性可以是nil,另外一个属性不允许是nil,并有可能产生强引用环。这种场景下适合使用无主引用。

你可能感兴趣的:(swift中的无主引用)