swift - 如何在 Swift 中获取值类型的引用?

标签 swift

struct 和 enum 等值类型是按值复制的。是否可以获取值类型变量的引用?

struct Test {}

let t = Test()
let s = t  // How to get a reference to t instead of a copy of t?

最佳答案

有几种方法可以获得引用。 Kristopher 的 Box 解决方案是最灵活的解决方案之一,可以构建为自定义框来处理将结构传递给 ObjC 等问题。

除此之外,最明显的是传递 inout 参数。这与引用并不完全相同,但它的行为可能非常相似,并且绝对可以成为高性能代码的一部分。

向下移动堆栈是 UnsafePointer 和它的 friend ,在一般类型上使用 withUnsafePointer(to:),或在上使用 .withUnsafeBufferPointer数组类型。

但是如果您需要一个可以存储在属性中的持久引用类型,您将需要一个 Box,正如 Kristopher 所描述的那样。

(因为我没有记住它,只是为了为 future 的读者捕捉它,但 MartinR 在评论中指出了它:as AnyObject can automatically box value types.)

关于swift - 如何在 Swift 中获取值类型的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138449/

相关文章:

ios - swift 3 : Cannot assign to AutoreleasingUnsafeMutablePointer

ios - 文件下载完成后检查内容类型 nsurlsessiondownloadtask

ios - 以编程方式快速更改纵横比约束

swift - 为什么在没有格式正确的输入的情况下从 String 返回值的 Decimal?

ios - 按日期从 Firebase 检索数据

swift - CKQuery 与 CloudKit 问题

ios - 无法将符合协议(protocol)的值设置为具有协议(protocol)类型的属性

swift 3 : Async queue is still blocking main thread/freezing app?

swift - 上下文类型 'AnyObject' 不能与字典文字多级字典一起使用

ios - 如何在 Xcode 7.0.1 上模拟 WatchOS