以下のコードはこのエラーを生成します(exporters
に追加):
致命的なエラー:負のカウントでUnsafeMutablePointer.deinitialize
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)
UnsafeMutablePointer.deinitialize
に関するStackOverflowの他の投稿は、この問題にあまり光を当てていません。これは一貫して発生するわけではありません。
何か案は?
同様のエラーが発生しました。この問題は、複数のスレッドが同時に配列を変更したことが原因でした。追加呼び出しをシリアルディスパッチキューにラップすることで解決しました。
let serialQueue = DispatchQueue(label: "myqueue")
serialQueue.sync {
exporters.append(exporter)
}
私はこのタイプの問題を次のように解決しました:
DispatchQueue.global(qos: .background).sync {
//your code
}