Как создать типизированный указатель из непрозрачного указателя в Swift 3?

Преобразование в 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

Почему это не работает?

1 ответ

content.data возвращает UnsafeMutableRawPointer, Оно имеет bindMemory а также assumingMemoryBound методы для преобразования в типизированные указатели:

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

У меня нет возможности проверить, что n есть, но я подозреваю, что это будет что-то вроде этого:

n = width * height * bitsPerPixel / 8
Другие вопросы по тегам