假设我有一个自定义容器类,我想通过复制来传递它,但我不想在每次将其传递给函数时都复制它。所以我想复制 Apple 用于创建 String
、Array
和 Dictionary
结构的模式。我如何创建一个容器结构,只要在该结构的副本上使用 setter ,该结构只生成一个副本。该类实现了 NSCopying
,使其在需要时非常容易复制。
最佳答案
我相信 Swift 对结构使用写时复制。这意味着它的行为就好像每次发生传递值时都在进行复制一样。但是,只有当被复制的对象发生变异时才会进行复制。
为了创建您自己的类型来利用此行为,请将其创建为struct
。您会发现必须将任何改变结构状态的函数创建为mutating func
。
关于struct - 如何实现苹果为其 Swift 类型(如数组、字典和字符串)使用的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496437/