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/