Преобразовать код "AudioStreamPacketDescription" в swift3.2

Я конвертирую Audio Queues Service код в swift3.2, но я застрял здесь. Я не знаю, как написать эту строку кода в быстрой обновленной версии.

Я хочу преобразовать приведенный ниже код в Swift 3.2

player.packetDescs = UnsafeMutablePointer<AudioStreamPacketDescription>(malloc(sizeof(AudioStreamPacketDescription) * Int(player.numPacketsToRead)))

где player Объект является:

 class Player {
        var playbackFile: AudioFileID? = nil
        var packetPosition: Int64 = 0
        var numPacketsToRead: UInt32 = 0
        var packetDescs: UnsafeMutablePointer<AudioStreamPacketDescription>? = nil
        var isDone = false
    }

Я попробовал это:

let j = MemoryLayout.size(ofValue: AudioStreamPacketDescription.self) * Int(player.numPacketsToRead)                
player.packetDescs = UnsafeMutablePointer<AudioStreamPacketDescription>(malloc(j))

Но это дает мне ошибку:

Невозможно вызвать инициализатор для типа "UnsafeMutablePointer" со списком аргументов типа "(UnsafeMutableRawPointer!)"

1 ответ

Решение

Хорошо попробуй это

let sizeTmp = MemoryLayout.size(ofValue: AudioStreamPacketDescription.self) * Int(player.numPacketsToRead)
let tmpPointer = UnsafeMutablePointer<AudioStreamPacketDescription>.allocate(capacity: sizeTmp)
player.packetDescs = tmpPointer
Другие вопросы по тегам