gpt4 book ai didi

ios - Swift 3 不安全指针

转载 作者:可可西里 更新时间:2023-11-01 06:02:25 25 4
gpt4 key购买 nike

我正在从 Swift 2 迁移到 Swift 3,我卡在了一个点上。

swift 2

let arr = UnsafePointer<UInt32>(UnsafePointer<UInt8>(buf).advanced(by: off))
let msk = arr[0].bigEndian & 0x7fffffff

第一行出现错误

'init' is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type.

我尝试使用 withMemoryoRebound方法,但我不确定参数。根据 this docuentation , UnsafePointer<>已被 UnsafeRawPointer 取代.所以我改变了我的代码如下

let arr = UnsafeRawPointer(UnsafePointer<UInt8>(buf).advanced(by: off))
let msk = arr[0].bigEndian & 0x7fffffff

但是在第二行它说

Type 'UnsafeRawPointer' has no subscript members

如何成功将其转换为 Swift 3?

最佳答案

这是使用 withMemoryRebound 执行该操作的方法:本例中的容量为 1,因为您只查看结果数组的第一个元素。

let arr = UnsafePointer<UInt8>(buf).advanced(by: off)
let msk = arr.withMemoryRebound(to: UInt32.self, capacity: 1) { p in
return p[0].bigEndian & 0x7fffffff
}

关于ios - Swift 3 不安全指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40637701/

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