2012-09-20 15 views
15

iOS 6 simülatöründe finishWriting bozuk görünüyor - sonsuza kadar askıda kalıyor. Şu anda, hiçbir zaman işleyiciyi aramayan yeni finishWritingWithCompletionHandler: ile kullanımdan kaldırıldı ve değiştirildi.AVAssetWriter finishWriting 6'da Simge başarısız oluyor Simülatör

iOS 6 çalıştıran gerçek aygıtlarda, bu her zaman olduğu gibi çalışır. Ayrıca önceki iOS simülatörlerinde de gayet iyi çalışıyor. IOS 6 simülatöründe bir hata gibi görünüyor.

Bunu yaşayan başka biri veya yanlış olduğunu ispatlayabilir miyim?

cevap

2

Simulator'de bir iş buldum.

//  in iOS6 Simulator this blocks the video processing thread call back in UI thread. 
//  BOOL stop = [assetWriter finishWriting]; 
[self performSelectorOnMainThread:@selector(stopInOtherThread) withObject:nil]; 

-(void)stopInOtherThread{ 
    //Stop doesn't block in MainThread 
    BOOL stop = [assetWriter finishWriting]; 
    NSLog(@" assetWriter finishWriting :%d",stop); 
} 

Bu geçici çözüm

denerim finishWritingWithCompletionHandler

için çalışmak görünmüyor: Dur video işleme ipliği böylece geçici bir çözüm yerine ana iş parçacığı durdurmak çağırmaktır kilitlenmeleri gibi

görünüyor ve Apple’da bir hata oluşturabilir miyim diye bak.

+0

Zaten bir hata gönderdim. Bu paradoks, iOS6'dan beri, ana iş parçacığındaki finishWriting olarak adlandırırsak, günlüğün şu şekildedir: UYARI: -finishWriting ana iş parçacığı üzerinde çağrılmamalıdır. – user1574100

+0

Aynı problemi yaşıyorum. iOS6 simülatörü, işleyici olarak adlandırılmaz ve durum AVAssetWriterStatusWriting öğesini hiçbir zaman değiştirmez. –

+1

Sadece projemi ARC kullanmak için değiştirdikten sonra başladım. –

11

Bu sorunu da yaşadım, daha sonra endSessionAtSourceTime çağrısı yapmadığımı fark ettim: bir tane başlattıktan sonra. Bu benim sorunumu çözdü.

+1

Bu benim için de çalıştı. Eğer “finishWritingWithCompletionHandler:” öğesini “AVAssetWriter” nesnesine çağırırsanız, o zaman tamamlanma işleyicisinin çalıştırılması için ** “endSessionAtSourceTime:” öğesini çağırmanız gerekir. (Belgeler, iOS 6.0'dan beri kullanımdan kaldırılmış olan "finishWriting" işlevini kullanırsanız, bunu aramak zorunda olmadığınızı belirtir.) – SolidSun

+0

Ayrıca benim için çalıştım. Deadlock her zaman gerçekleşmedi, ancak çıktı dosyası hiçbir zaman endSessionAtSourceTime: 'çağrısı olmadan doğru yazılmadı. –