我正在开发一个可以拍照并将其保存到设备的应用程序。 单击"保存"时,似乎花费的时间太长,并在日志中抛出以下消息:
wait_fences: failed to receive reply: 10004003
以下是保存拍摄的照片时调用的方法:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
int img_count = [[appDelegate retrieveFromUserDefaults:@"image_saved"] intValue];
img_count = img_count + 1;
NSString *imageName = [[NSString alloc] initWithFormat:@"dmg_image_%@_%d", [appDelegate retrieveFromUserDefaults:@"current_job_id"], img_count];
[appDelegate saveImage:image withName:imageName];
[appDelegate saveToUserDefaults:imageName key:@"inspection_image"];
[damageImage setImage:image];
[damageDesc becomeFirstResponder];
}
我确定我错过了一些简单的东西,我认为无论抛出这条消息是什么,都是它运行缓慢的原因。
我已经阅读了遇到此问题的其他人,但他们使用的是警报呼叫,而不是拍照的回报。 在调用 didFinishPick 时,我是否也应该使用轻微的延迟?
谢谢!
问题可能是您在主线程上运行此 metho。wait_fences
函数是其中一个 iOS 图形库的内部函数,它与动画相关 - 当您保存图像时,您会在将大量数据写入文件时阻塞主线程和 UI。将保存功能移动到另一个线程(考虑使用 NSThread
),您的用户界面应该会再次响应。