2012-06-24 227 views
1

我正在編寫一個與iPhone通訊簿接口的應用程序。ABPersonSetImageData極其緩慢

這裏是我的代碼的相關部分(從UIImagePickerControllerDelegate

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

我的應用程序可以讓你拍照與攝像頭(使用UIImagePictureController),並將其存儲在您的地址的人接觸書。

我發現上述操作會持續5-10秒。 1)有更好的方法嗎? 2)爲什麼這麼慢?

+0

您是否嘗試過使用JPEG表示? –

+0

是的,它可能快25%,但仍需要5秒以上。我必須認爲有一個更快的方法來做到這一點,雖然...? –

回答

1

Saving as a JPEG

UIImageJPEGRepresentation (UIImage *image, CGFloat compressionQuality); 

將比UIImagePNGRepresentation更快,尤其是如果compressionQuality被設定爲較低的值。但是,這仍然是一個CPU密集型的過程,所以無法避免等待。

您可以做的最好的是顯示正在完成工作的消息,因此界面不會反應遲鈍。使用類似SVProgressHUD這樣做。

+0

謝謝!這讓我想知道它是如何在本地通訊錄應用程序中如此快速地完成的。我在猜測後臺線程? –