Swift中的var
和weak var
之间有什么区别?
答案 0 :(得分:10)
这与ARC管理对象内存的方式有关。
使用var
定义对象的强引用,而使用weak var
定义对象的弱引用。
只要对该对象有一个或多个强引用,对象就会保留在内存中。使用弱引用允许您保持对对象的引用,而不会增加所谓的"保留计数"。
如果没有其他内容可以引用您的weak var
,则该对象将被取消分配,您的weak var
将衰减为nil
。 1 这会赢得&# 39;当你只使用var
时就会发生这种情况,因为它定义了一个对象的强引用,这可以防止它被解除分配。
这与" strong" vs"弱"在Objective-C中工作,我建议你阅读this answer,因为它完全适用于Swift。
1 作为Swift特定说明,这就是声明为weak var
的任何内容必须是可选类型的原因。