Небезопасная инициализация указателя

#ios #swift3

#iOS #swift3

Вопрос:

 1. let context = CGContext(...)
2. context.draw(...)
3. let buffer = UnsafeMutablePointer<UInt32>(context.data) // error here  
  

При использовании Swift 3 строка 3 выдает ошибку, которая гласит:

 Cannot invoke initializer for type 'UnsafeMutablePointer<UInt32>' with an argument list of type '(UnsafeMutableRawPointer?)'
  

Есть ли способ преобразовать UnsafeMutableRawPointer в любой подходящий тип, который UnsafeMutablePointer принимается в качестве параметра при инициализации?

Кстати, ссылку на класс для UnsafeMutablePointer можно найти здесь .

Ответ №1:

Я думаю, это выполнит инициализацию.

     let ptr = context.data
    let data = ptr!.assumingMemoryBound(to: UnsafeMutablePointer<UInt32>.self).pointee
    let pixelBuffer = UnsafeMutablePointer<UInt32>(data)