这在 Swift 5.0 中是被允许的:
class Person {
unowned var child: Person?
}
这得益于这个发行说明:
unowned
和unowned(unsafe)
变量现在支持可选类型。(47326769)
我很清楚地理解了 Swift 4.2 及之前版本中 weak 和 unowned 的区别。但是,我不确定为什么 Apple 决定将 unowned
变成了可选类型。即使在文档中(这些文档是 Swift 5.0 的文档),这个被实现的“提案”(我甚至可以在哪里找到添加可选 unowned 引用的动机?)没有更新,因为它说:
未拥有引用应始终具有值。因此,ARC 永远不会将未拥有引用的值设置为 nil,这意味着未拥有引用使用非可选类型进行定义。
上述内容已经不再正确。Apple 宣称唯一的功能差异是 unowned
引用期望具有与持有该引用的对象相同或更长的生命周期。我对技术使用方面很好奇。
当我使用 weak
引用和可选的 unowned
引用时会有什么区别?或者唯一的区别是仅在引用对象具有更长的生命周期时应使用可选的 unowned
引用?我期望有更多的区别...
nil
的是可选类型(Optional),也就是nil
是可选类型的一个可能值。那么如何将“非可选”和“nil”放在同一个句子中呢? - matt