struct - 如何实现苹果为其 Swift 类型(如数组、字典和字符串)使用的模式

标签 struct swift containers

假设我有一个自定义容器类,我想通过复制来传递它,但我不想在每次将其传递给函数时都复制它。所以我想复制 Apple 用于创建 StringArrayDictionary 结构的模式。我如何创建一个容器结构,只要在该结构的副本上使用 setter ,该结构只生成一个副本。该类实现了 NSCopying,使其在需要时非常容易复制。

最佳答案

我相信 Swift 对结构使用写时复制。这意味着它的行为就好像每次发生传递值时都在进行复制一样。但是,只有当被复制的对象发生变异时才会进行复制。

为了创建您自己的类型来利用此行为,请将其创建为struct。您会发现必须将任何改变结构状态的函数创建为mutating func

关于struct - 如何实现苹果为其 Swift 类型(如数组、字典和字符串)使用的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496437/

相关文章:

swift 3 : Return from initializer error

docker - 如何向 OpenShift/Kubernetes 部署提供环境信息(如外部服务 URL 或密码)?

c - 仍然能够访问已释放的结构

c - 初始化指向结构体指针的指针

c# - 为什么具有可为空值的结构的 HashSet 非常慢?

C - 创建一个 sockaddr 结构

ios - 无法将类型 [[EVObject]?] 的值转换为预期的参数类型 [_]

ios - Swift 3 FBSDKCoreKit 错误

c++priority_queuepush/emplace,无需创建临时对象

javascript - IBM Bluemix Node.js 原生 Promise 支持