Swift中的var
和weak var
有什么区别?
这与ARC如何管理对象的内存有关。
使用var
定义了对对象的强引用,而使用weak var
定义了对该对象的弱参考。
只要有一个或多个对对象的强引用,对象就会被保存在内存中。使用弱引用可以保持对对象的引用,而不增加其"保留计数"。
如果没有其他内容包含对weak var
的引用,则对象将被释放,并且weak var
将衰减为nil
1当您只使用var
时,这种情况不会发生,因为这定义了对对象的强引用,这将防止它释放。
这与Objective-C中"强"与"弱"的工作方式相同,我建议您阅读这个答案,因为它完全适用于Swift。
1
作为Swift特有的注释,这就是为什么任何声明为weak var
的类型都必须是可选类型的原因