在Swift中为同一个变量使用weak和optional是多余的吗?

Fed*_*ico 0 ios swift

我是Swift的新手,在Apple文档中我看到了:

只要有效的引用在其生命周期中的某个时刻变为> nil,就应使用弱引用。

我不应该仅通过使用“?”来实现吗?对于可选类型?

换一种说法:

执行weak?重叠?

如果我不按optionalwhen 定义变量,编译器会抱怨weak,因此我觉得可以删除它而忘了它,但是我只是误解了它。

谢谢!

Ren*_*ers 5

不,弱点和可选部分不相同,但是两者之间存在一些相互作用。

可选只是表示变量可以是nil,您可以自己分配nil,也可以通过其他方式将其变为nil。

weak关键字与内存管理的事情。如果变量不是 weak(即强),则表示ARC对分配的实例拥有强大的引用。因此,即使没有其他引用,该实例仍将保留在内存中,因为该变量仍“持有它”。

当a变量是时weak,它没有对其的强大引用。这意味着当没有其他强引用时,实例将被释放,并且变量将nil自动变为。这也解释了为什么弱变量必须是可选的。

您链接到的文档实际上很清楚地解释了这一点。