私は iOS 開発にかなり慣れていませんが、より複雑な概念のいくつかを理解し始めています。私は現在、ビデオをキャプチャするために AVCam を実装するアプリケーションを持っています。AVCam は別のスレッドで作成されますが、メインの xib ファイルにあるビューを使用します。カメラがキャプチャを完了すると、ViewController クラスの完全な関数が呼び出されます。完全な関数内で、UI といくつかの NSLog を更新する他の多くの関数を呼び出します。コンソールにすぐにログが表示されますが、UI の更新にはさらに 3 秒かかります。計測器を使用して問題のあるコードを見つけようとしましたが、見つけられないようです。UI によって何がブロックされているかを判断する別の方法はありますか?
記録が完了したときに呼び出されるコードは次のとおりです。
-(void)movieRecordingCompleted{
[HUD hide:YES];
NSLog(@"movieRecordingCompleted");
[self showModalViewController];
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.mov"];
NSLog(@"pathToMovie: %@", pathToMovie);
pathToTreatedVid = pathToMovie;
NSLog(@"File Save Called");
UISaveVideoAtPathToSavedPhotosAlbum(pathToMovie, nil, NULL, NULL);
}
すべてがすぐにログに記録されますが、プログレス HUD とモーダル ビュー コントローラーが約 2 ~ 5 秒間トリガーされず、非常に奇妙です。
これは、スレッドの前後の状態です (凍結されたときと凍結解除されたとき)。