【发布时间】:2019-10-28 14:13:15
【问题描述】:
在 swift 中,您可以使用保护语句解开可选值
guard let foo = foo else { return nil }
此声明是否复制了foo?换句话说,如果foo 非常大,这个语句会不会很昂贵?
【问题讨论】:
-
我很好奇,您将如何使用这些知识?假设它确实导致了副本,你会怎么做?
-
一个例子是,如果这是一项昂贵的操作,有更好的解包方法。就我而言,我想知道是否应该在此代码周围使用锁,因为其他线程正在修改
foo -
“一个例子是,如果这是一个昂贵的操作,有更好的解包方法”比如什么?
-
foo!不会复制吧?或者,最好一开始就避免使用可选项。 -
"
foo!不会复制吧?"你不知道。我的意思是,它碰巧没有,条件绑定也没有,但我没有看到语言文档中的任何地方都明确说明了这一点。如果他们确实导致复制,你会怎么做?你的手有点束缚,你需要这个功能,不管它是否会导致复制。
标签: swift performance memory