gpt4 book ai didi

swift - 如何从不可变的非类值中获取 Swift UnsafePointer?

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:05 28 4
gpt4 key购买 nike

我希望能够从不可变值创建一个 UnsafePointer

我尝试做的最简单的复制如下:

let number : Int = 42;
var pointer = UnsafePointer<Int>(&number);
^
| Could not make `inout Int` from immutable
value.

由于 Int 不符合 AnyObject,我不能使用 unsafeAddressOf()

最佳答案

根据 message in the [swift-evolution] mailing list by Joe Groff ,您可以在将指针传递给另一个函数时简单地将变量包装在数组中。此方法创建一个包含目标值副本的临时数组,甚至可以在 Swift 2 中使用。

let number : Int = 42
my_c_function([number])

Swift 3中,您可以直接构造一个UnsafePointer。但是,您必须确保数组的生命周期与 UnsafePointer 的生命周期匹配。否则,数组和复制的值可能会被覆盖。

let number : Int = 42
// Store the "temporary" array in a variable to ensure it is not overwritten.
let array = [number]
var pointer = UnsafePointer(array)

// Perform operations using the pointer.

关于swift - 如何从不可变的非类值中获取 Swift UnsafePointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30771193/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com