【问题标题】:How to create a typed pointer from an opaque pointer in Swift 3?如何从 Swift 3 中的不透明指针创建类型化指针?
【发布时间】:2016-09-16 20:39:11
【问题描述】:

转换为 Swift 3 时出现编译器错误:

无法调用类型“UnsafeMutablePointer”的初始化程序 '(UnsafeMutableRawPointer?)' 类型的参数列表

当尝试从不透明指针创建类型化指针时:

let imageRef = myUIImage.cgImage!
let context = CGContext(...)!
let rect = CGRect(...)
context.draw(imageref, in: rect)

var data = context.data
var dataType = UnsafeMutablePointer<UInt8>(data) //Throws the error

为什么这不起作用?

【问题讨论】:

标签: swift pointers swift3 unsafemutablepointer


【解决方案1】:

content.data 返回一个UnsafeMutableRawPointer。它有一个 bindMemoryassumingMemoryBound 方法来转换为类型化指针:

let dataType = data.bindMemory(to: UInt8.self, capacity: n) // UnsafeMutablePointer<UInt8>

我没有机会测试n 是什么,但我怀疑它会是这样的:

n = width * height * bitsPerPixel / 8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2016-06-30
    • 1970-01-01
    • 2018-02-22
    • 2015-03-03
    相关资源
    最近更新 更多