gpt4 book ai didi

swift - 无主引用有什么好处?

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:32 25 4
gpt4 key购买 nike

弱引用和无主引用用于在两个对象各自持有对另一个对象的引用的情况下防止循环保留。我使用了 weak,但没有使用 unowned。这是 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
}
}

这个想法是,没有客户就不能存在信用卡。因此,信用卡可以免除使用弱引用所必需的可选解包,而是可以使用无主引用。嗯……那为什么不使用强引用呢?如果对客户的所有其他引用都消失了(这是不应该发生的?),那么信用卡使用拥有的引用将导致崩溃;而它使用强引用会导致内存泄漏。嗯?两害相权取其轻?最好崩溃,因为在开发和测试期间更有可能注意到这一点?

请帮忙提供一些见解。谢谢。

最佳答案

Better to crash because that is more likely to be noticed during development and testing?

是的。

嗯,不完全是。

我们的想法是您的应用程序的设计 应该确保没有CreditCard 实例比它各自的Customer 实例长寿。当您使用 unowned 时,您相信自己 有一个在逻辑上保证无崩溃执行的设计。

现在,为什么有人会使用 unowned 而不是 weak?简单的! unowned 消除了 Optional 解包的整个麻烦,如果您知道您的 CreditCard 实例将永远超过它各自的生命周期Customer 实例,那么你一定要使用unowned

关于swift - 无主引用有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41061217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com