问题
The code below generates this error (appending to exporters
):
fatal error: UnsafeMutablePointer.deinitialize with negative count
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)
The other posts on StackOverflow regarding UnsafeMutablePointer.deinitialize
do not shed much light on the issue, which doesn't happen consistently.
Any ideas?
回答1:
I had a similar error, the issue was caused by multiple threads modifying the array at the same time. Wrapping the append calls in a serial dispatch queue solved it for me.
let serialQueue = DispatchQueue(label: "myqueue")
serialQueue.sync {
exporters.append(exporter)
}
来源:https://stackoverflow.com/questions/40080508/swift-unsafemutablepointer-deinitialize-fatal-error-with-negative-count-when-ap