#ios #swift #video #avassetexportsession
#iOS #swift #Видео #avassetexportsession
Вопрос:
Приведенный ниже код генерирует эту ошибку (добавление к exporters
):
неустранимая ошибка: небезопасный указатель.деинициализировать с отрицательным количеством
var exporters = [AVAssetExportSession]()
let exporter = AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetHighestQuality)!
exporter.videoComposition = videoComposition
exporter.outputFileType = AVFileTypeMPEG4
exporter.outputURL = exportURL
exporter.shouldOptimizeForNetworkUse = true
exporters.append(exporter)
Другие сообщения о StackOverflow, касающиеся UnsafeMutablePointer.deinitialize
, не проливают много света на проблему, что происходит не всегда.
Есть идеи?
Ответ №1:
У меня была аналогичная ошибка, проблема была вызвана одновременным изменением массива несколькими потоками. Перенос вызовов добавления в очередь последовательной отправки решил это для меня.
let serialQueue = DispatchQueue(label: "myqueue")
serialQueue.sync {
exporters.append(exporter)
}
Ответ №2:
Я решил проблему такого типа следующим образом:
DispatchQueue.global(qos: .background).sync {
//your code
}