Как создать типизированный указатель из непрозрачного указателя в 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