Swift中var和weak var之间有什么区别?

时间:2015-04-05 20:00:06

标签: swift memory-management weak-references

Swift中的varweak var之间有什么区别?

1 个答案:

答案 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的任何内容必须是可选类型的原因。