我正在开发一款可拍照并将其保存到设备的应用。单击“保存”时似乎需要太长时间,它会在日志中抛出此消息:
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];
}
我确信我错过了一些简单的东西,而且我认为抛出这条信息的原因是它运行得有点慢。
我已经阅读过其他有这个问题的人了,但他们正在使用提醒电话,而不是拍照留言。在调用didFinishPicking时我应该稍微延迟吗?
谢谢!
答案 0 :(得分:2)
问题是,大概是你在主线程上运行这个方法。 wait_fences
函数是其中一个iOS图形库的内部函数,它与动画有关 - 当你保存图像时,你会在写入大量的图像时阻塞主线程和UI。数据到文件。将保存功能移到另一个线程(考虑使用NSThread
),您的用户界面应该再次响应。