当我从 swift 2 转换为 swift 3 后,下面提到的行会弹出一个错误
let value = UnsafePointer<UInt32>(array1).pointee
“init”不可用:使用“withMemoryRebound(to:capacity:_)”暂时将内存视为另一种布局兼容类型。
在 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
to UnsafePointer<T>
.
参考 :
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)