Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何从不可变的非类值中获取Swift UnsafePointer?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我希望能够从不可变值创建UnsafePointer. 我试图做的最简单的再现如下: let number : Int = 42; var pointer = UnsafePointer<Int>(&number); ^ | Could not make `inout
我希望能够从不可变值创建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 UnsafePointer?全部内容,希望文章能够帮你解决如何从不可变的非类值中获取Swift UnsafePointer?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: