Преобразовать код "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