对于UIImagePickerController,我打开了
picker.allowsEditing = YES;
这样用户可以在捕获或从相册中选择后移动和缩放照片。点击“选择”或“使用”后,整个应用程序冻结超过5秒,然后返回照片,通过
- (void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
我试图在这个委托函数中添加一个指标,但它没有出现......我猜,长延迟发生在这个回调之前,可能是因为来自ful的“编辑”
有没有办法解决这个问题?我只想给用户一个很好的体验。 :)
非常感谢!!
答案 0 :(得分:6)
您应该在另一个线程和NSAutoreleasePool上执行此操作,如下所示:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
[self.navigationController dismissModalViewControllerAnimated:YES];
[NSThread detachNewThreadSelector:@selector(uploadImage:) toTarget:self withObject:image];
}
- (void)uploadImage:(UIImage *)image {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Handle chosen photo
[pool release];
}
答案 1 :(得分:0)
你是从主线程调用UIImagePicker吗?
应该从那里调用此代码。每次我在与UI相关的任何内容上都有5秒的延迟,这是因为代码是从另一个线程调用的,而不是主线程。