【发布时间】:2013-04-02 10:09:46
【问题描述】:
我对 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秒都没有触发,这很奇怪。
这是线程的前后状态(冻结时与解冻时)。
【问题讨论】:
-
请显示一些更新 UI 的代码。
标签: ios multithreading user-interface blocking