我希望能够创建一个UnsafePointerfrom immutable值.
我试图做的最简单的再现如下:
let number : Int = 42;
var pointer = UnsafePointer<Int>(&number);
^
| Could not make `inout Int` from immutable
value.
Run Code Online (Sandbox Code Playgroud)
由于Int不符合AnyObject,我不能使用unsafeAddressOf().
根据Joe Groff 在 [swift-evolution] 邮件列表中的消息,在将指针传递给另一个函数时,您可以简单地将变量包装在数组中。此方法使用目标值的副本创建一个临时数组,甚至可以在Swift 2中使用。
let number : Int = 42
my_c_function([number])
Run Code Online (Sandbox Code Playgroud)
在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.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |