Swift 中的 var 和 weak var 有什么区别

What is the difference between a var and a weak var in Swift

var 和 Swift 中的 weak var 有什么区别?

这与 ARC 管理对象内存的方式有关。

使用 var 定义对象的 strong 引用,而使用 weak var 定义对象的 weak 引用到对象。

只要存在对该对象的一个​​或多个强引用,对象就会保留在内存中。使用弱引用允许您保留对对象的引用而不增加所谓的 "retain count".

如果没有其他对象持有对您的 weak var 的引用,该对象将被释放,并且您的 weak var 将衰减为 nil1 当您只使用 var 时不会发生这种情况,因为它定义了对该对象的强引用,这应该可以防止它被释放。

这与 "strong" 与 "weak" 在 Objective-C 中的工作方式相同,我建议您阅读 this answer,因为它完全适用于 Swift .

1作为 Swift 特定说明,这就是为什么声明为 weak var 的任何内容都必须是可选类型的原因.