我试图做的最简单的再现如下:
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 = 42my_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 UnsafePointer?全部内容,希望文章能够帮你解决如何从不可变的非类值中获取Swift UnsafePointer?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)