【发布时间】:2017-09-10 00:25:33
【问题描述】:
我的模型在 Swift 3.0 中实现为 structs。其中几个structs 具有应该能够根据用户的操作修改模型的委托。
但是,当我将 struct 传递给 delegate 方法时,它会被复制。
你如何解决这个问题?您能否强制编译器将此struct 作为参考传递,或者唯一的选择是使用class?
【问题讨论】:
-
首先使用
struct的全部意义在于这是一种可取的行为。它保留了数据的不变性。inout可以做到这一点,但一般情况下不推荐。为什么复制是一个问题? -
那你如何从Controller修改模型呢?如果您有一个委托方法将模型作为第一个参数传递,就像在 Cocoa 中一样,委托(通常是控制器)如何修改 real 模型,而不是它的副本?
-
@cfischer 修改模型是控制器的工作,而不是委托。控制器应该询问委托如何修改模型,然后自己修改它。
标签: swift struct pass-by-reference value-type