ios - UnsafePointer 不再适用于 swift 3

标签 ios swift swift3

在我从 swift 2 转换为 swift 3 后,下面提到的行弹出错误

let value = UnsafePointer<UInt32>(array1).pointee

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

在swift2中就像

let value = UnsafePointer<UInt32>(array1).memory

有人可以解释一下吗? 对不起,我对 swift3 很陌生

修改后

let abc = UnsafePointer<UInt32>(array1).withMemoryRebound(to: <#T##T.Type#>, capacity: <#T##Int#>, <#T##body: (UnsafeMutablePointer<T>) throws -> Result##(UnsafeMutablePointer<T>) throws -> Result#>)

但仍然应该向变量中输入什么值?抱歉,我四处搜索,但太糟糕了,我找不到解决方案

最佳答案

你可以试试这个:

let rawPointer = UnsafeRawPointer(array1)
let pointer = rawPointer.assumingMemoryBound(to: UInt32.self)
let value = pointer.pointee

原始指针是用于访问非类型数据的指针。

assumingMemoryBound(to:)可以从 UnsafeRawPointer 转换至 UnsafePointer<T> .

引用:Swift 3.0 Unsafe World

关于ios - UnsafePointer 不再适用于 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39824340/

相关文章:

swift - 如何在 Swift 中多态地转换为类类型?

ios - 这个 Objective-C 正则表达式有什么问题?

ios - 确定 ABContactsHelper 的 iOS 排序顺序

ios - Swift JSONSerialization 作为 NSDictionary 无法获取内部的值

iOS swift while 循环卡住我的应用程序

ios - UICollectionViewDiffableDataSource 正在替换数据而不是更新

ios - Swift 3 - 如何提高 Tesseract 的图像质量?

swift - 向后滚动时单元格不会被取消选择

ios - 如何快速记录日期,时间和分数

ios:如何使用音频队列从蓝牙耳机录音?