Swift: небезопасный указатель.деинициализировать неустранимую ошибку с отрицательным количеством при добавлении в массив

#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 
    }