弱和无主引用用于防止在两个对象各自保持对另一个的引用的情况下的保留周期.我得到弱者的使用,但我没有得到无主的使用.以下是Apple的示例,其中两个对象之一应使用无主参考:
class Customer {
let name: String
var card: CreditCard?
init(name: String) { self.name = name }
}
class CreditCard {
let number: UInt64
unowned let customer: Customer
init(number: UInt64, customer: Customer) {
self.number = number
self.customer = customer
}
}
Run Code Online (Sandbox Code Playgroud)
这个想法是没有客户就不能存在信用卡.因此,信用卡可以省去使用弱引用所需的可选展开,并且可以使用无主参考.嗯...那么为什么不使用强大的参考?如果对客户的所有其他引用都消失了(这不应该发生?)那么信用卡使用自己的引用会导致崩溃; 而使用强引用会导致内存泄漏.咦?两种邪恶之间的选择?更好地崩溃,因为在开发和测试期间更容易被注意到?
请帮忙解决一下.谢谢.
这实际上不是问题,因为就目前而言,unowned引用不会创建任何类型的强引用循环。当Customer对象被释放时,它CreditCard也将立即被释放。您CreditCard将永远没有机会引用该已释放的Customer。
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |