Не удается преобразовать значение типа ‘UnsafeMutableRawPointer’ в ожидаемый тип аргумента ‘UnsafePointer?’

#swift #pointers

#swift #указатели

Вопрос:

Как мне привести UnsafeMutableRawPointer к UnsafePointer<UInt8>? ? Например, как это в C (unsigned char*)VoidPointer ?

Ответ №1:

Начиная с необработанного указателя, вы можете load создать объект по адресу в памяти, или вы можете привязать память, чтобы получить типизированный указатель на ту же память:

 // buff is a CVImageBuffer
if let baseAddress = CVPixelBufferGetBaseAddress(buff) {
    // baseAddress is an UnsafeMutableRawPointer
    let addrptr = baseAddress.assumingMemoryBound(to: UInt8.self) // *
    // addrptr is an UnsafeMutablePointer<UInt8>
    // ...
}