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
将衰减为 nil
。1 当您只使用 var
时不会发生这种情况,因为它定义了对该对象的强引用,这应该可以防止它被释放。
这与 "strong" 与 "weak" 在 Objective-C 中的工作方式相同,我建议您阅读 this answer,因为它完全适用于 Swift .
1作为 Swift 特定说明,这就是为什么声明为 weak var
的任何内容都必须是可选类型的原因.
var
和 Swift 中的 weak var
有什么区别?
这与 ARC 管理对象内存的方式有关。
使用 var
定义对象的 strong 引用,而使用 weak var
定义对象的 weak 引用到对象。
只要存在对该对象的一个或多个强引用,对象就会保留在内存中。使用弱引用允许您保留对对象的引用而不增加所谓的 "retain count".
如果没有其他对象持有对您的 weak var
的引用,该对象将被释放,并且您的 weak var
将衰减为 nil
。1 当您只使用 var
时不会发生这种情况,因为它定义了对该对象的强引用,这应该可以防止它被释放。
这与 "strong" 与 "weak" 在 Objective-C 中的工作方式相同,我建议您阅读 this answer,因为它完全适用于 Swift .
1作为 Swift 特定说明,这就是为什么声明为 weak var
的任何内容都必须是可选类型的原因.