和weak关键字不同的是,unowned声明的只能定义为非可选类型。在属性变量前加unowned,可以声明一个无主引用。
因为是可选类型,因此当使用无主引用的时候,不需要展开,可以直接访问。不过费可选类型不能赋值为nil。因此当实例销毁的时候,ARC无法将引用赋值为nil。
因此:
weak的作用:
Person和Apartment的例子说明了下面的场景:两个属性的值都可能是nil,并有可能产生强引用环。这种场景下适合使用弱引用。
unowned的作用:
Customer和CreditCard的例子则说明了另外的场景:一个属性可以是nil,另外一个属性不允许是nil,并有可能产生强引用环。这种场景下适合使用无主引用。