ABPersonSetImageData е изключително бавен

Пиша приложение, което взаимодейства с адресната книга на iPhone.

Ето съответния раздел от моя код (от UIImagePickerControllerDelegate)

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

Моето приложение ви позволява да правите снимка с камерата (използвайки UIImagePictureController) и след това да я съхранява като контакт за някого в адресната ви книга.

Откривам, че операцията по-горе спира за 5-10 секунди. 1) Има ли по-добър подход? 2) Защо това е толкова бавно?


person Matt H.    schedule 24.06.2012    source източник
comment
Опитвали ли сте да използвате JPEG представяне?   -  person Alexsander Akers    schedule 24.06.2012
comment
Да, вероятно е с 25% по-бърз, но все пак отнема повече от 5 секунди. Трябва да мисля, че има по-бърз начин да направя това...?   -  person Matt H.    schedule 24.06.2012


Отговори (1)


Запазване като JPEG:

UIImageJPEGRepresentation (UIImage *image, CGFloat compressionQuality);

ще бъде по-бързо от UIImagePNGRepresentation, особено ако compressionQuality е зададено на ниска стойност. Въпреки това, това все още е процес, натоварващ процесора, така че няма начин да избегнете чакането.

Най-доброто, което можете да направите, е да покажете съобщение, че се извършва работа, така че интерфейсът да не се чувства безотговорен. Използвайте нещо като SVProgressHUD, за да направите това.

person mopsled    schedule 24.06.2012
comment
Благодаря! Това ме кара да се чудя как става толкова бързо в родното приложение за контакти. Предполагам, че фонова тема? - person Matt H.; 26.06.2012