Swift如何解开可选变量?展开会导致任何开销吗?

时间:2018-10-07 08:30:25

标签: ios swift

最近,我研究了弱而无主的var。弱引用一个可选的var,但不拥有一个空的var。所以我很好奇解包的机制是什么。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

实际上,这可以追溯到泛型类型。实现是这样的

enum OptionalValue<Wrapped> {
    case none
    case some(Wrapped)
}

当您尝试打开包装时,它会检查它是否为none。这就像在做这样的事情。

var possibleInteger: OptionalValue<Int> = .none
possibleInteger = .some(100)

所以我认为没有太大的开销。这是一个简单的检查。

答案 1 :(得分:0)

我认为您正在将所有概念融合为一个。我建议阅读这篇文章,以获取strongweakunowned引用,本文使用一个示例和图表来向您展示引用类型如何工作以及如何避免保留周期。搏一搏。 https://krakendev.io/blog/weak-and-unowned-references-in-swift

当涉及到包装可选包装时,有很多方法可以做到。尝试掌握以下概念(Google上有数百万个来源)

  • If let语句
  • guard语句
  • 强制展开
  • 链接

基本上可选的是大小写为.none和.some(yourWrappedVariable)的枚举。

或者,如果您要问的是真正特定的问题,请尝试更详细地编辑问题,这样肯定会得到更好的答案。