如何从 Swift 3 中的不透明指针创建类型化指针?
Posted
技术标签:
【中文标题】如何从 Swift 3 中的不透明指针创建类型化指针?【英文标题】:How to create a typed pointer from an opaque pointer in 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
为什么这不起作用?
【问题讨论】:
比较How to get bytes out of an UnsafeMutableRawPointer? 【参考方案1】:content.data
返回一个UnsafeMutableRawPointer
。它有一个 bindMemory
和 assumingMemoryBound
方法来转换为类型化指针:
let dataType = data.bindMemory(to: UInt8.self, capacity: n) // UnsafeMutablePointer<UInt8>
我没有机会测试n
是什么,但我怀疑它会是这样的:
n = width * height * bitsPerPixel / 8
【讨论】:
以上是关于如何从 Swift 3 中的不透明指针创建类型化指针?的主要内容,如果未能解决你的问题,请参考以下文章