Kha*_*yen 9 cocoa-touch swift3
我有这个代码
let grayData = UnsafeMutablePointer<UInt8>(other: malloc(width * height * sizeof(UInt8)))
Run Code Online (Sandbox Code Playgroud)
哪个不能在Swift 3中编译.如何修复此问题?
Kaz*_*awa 30
我遇到了类似的问题,但没有任何关系malloc.如果你的代码需要处理与斯威夫特3 C库,你必须处理void *这相当于UnsafeMutableRawPointer在斯威夫特3.您的代码需要把它作为一个特定的结构.但不知何故,swift 3编译器对我来说很难进行投射.我花了一些时间来弄明白,我喜欢分享我的代码如何做到这一点.
这里是展示铸造的代码UnsafeMutableRawPointer来UnsafeMutablePointer<T>修改它的指针对象,并确保原Context被更新.
struct Context {
var city = "Tokyo"
}
var context: Context = Context()
let rawPtr = UnsafeMutableRawPointer(&context)
let opaquePtr = OpaquePointer(rawPtr)
let contextPtr = UnsafeMutablePointer<Context>(opaquePtr)
context.city // "Tokyo"
contextPtr.pointee.city = "New York"
context.city // "New York"
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你最好使用allocate(capacity:)方法.
let grayData = UnsafeMutablePointer<UInt8>.allocate(capacity: width * height)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7759 次 |
| 最近记录: |