ABPersonSetImageData非常慢

时间:2012-06-24 01:01:31

标签: iphone objective-c abaddressbook

我正在编写一个与iPhone地址簿接口的应用程序。

以下是我的代码的相关部分(来自UIImagePickerControllerDelegate

-(void)imagePickerController:(UIImagePickerController *)picker 
       didFinishPickingImage:(UIImage *)image 
                 editingInfo:(NSDictionary *)editingInfo
{
    ABPersonSetImageData(record, (__bridge CFDataRef)UIImagePNGRepresentation(image), &error);
}

我的应用可让您使用相机拍摄照片(使用UIImagePictureController),然后将其存储为地址簿中某人的联系人。

我发现上面的操作挂起了5-10秒。 1)有更好的方法吗? 2)为什么这么慢?

1 个答案:

答案 0 :(得分:1)

Saving as a JPEG

UIImageJPEGRepresentation (UIImage *image, CGFloat compressionQuality);

将比UIImagePNGRepresentation快,特别是如果compressionQuality设置为较低值。但是,这仍然是一个CPU密集型进程,因此无法避免等待。

您可以做的最好的事情是显示正在完成工作的消息,因此界面不会感觉无响应。使用SVProgressHUD之类的东西来做到这一点。