在Swift中,var和weak var有什么区别?

7

varweak var在Swift中有什么区别?


5
Stack Overflow用户应该投入多少研究努力?(翻译说明:原文题目已经是中文,所以直接翻译了问题内容。) - Martin R
1个回答

17
这与ARC如何管理对象的内存有关。
使用var会定义对该对象的强引用,而使用weak var则会定义对该对象的弱引用
只要仍然存在一个或多个strong reference指向某个对象,那么该对象就会一直保存在内存中。使用weak reference允许您持有对对象的引用,而不增加其“保留计数”(retain count)。
如果没有其他东西保持对你的weak var的引用,那么对象将被释放,你的weak var将会变成nil1。当你只使用var时,这种情况不会发生,因为它会定义对对象的强引用,这应该会防止它被释放。
这与Objective-C中的“强”和“弱”的工作方式完全相同,我建议您阅读这个回答,因为它完全适用于Swift。 1作为一个Swift特定的注意事项,这是为什么任何声明为weak var的东西必须是可选类型的原因。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接