dataWithContentsOfURL和imageWithData占用整个加载时间的84%

时间:2013-04-30 13:51:36

标签: objective-c performance uiimage nsdata

这两行占我应用程序整个加载时间的40%和42%(合84%)。我用 Instruments 测试了它。

NSData *storeImageData = [NSData dataWithContentsOfURL:storeImageURL]; //40% whole load time
UIImage *storeImage = [UIImage imageWithData:storeImageData]; //42% whole load time 

是否有其他/更好的方法可以加快我的应用的加载时间?这两行和更多的代码都在一个循环中,将循环大约500次。

注意
将“http://”添加到通常的“www.blah.net”后,它开始变慢。有谁知道为什么URL中的7个字符(大约30-50个)会减慢加载时间,从而大大降低。在我改变之前,花了3秒钟。现在37秒。

1 个答案:

答案 0 :(得分:4)

用这些替换你的行,

 __block NSData *storeImageData;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, NULL);
dispatch_async(queue, ^{
    //load url image into NSData
    storeImageData = [NSData dataWithContentsOfURL:storeImageURL];

    dispatch_sync(dispatch_get_main_queue(), ^{
        //convert data into image after completion
        UIImage *storeImage = [UIImage imageWithData:storeImageData];
        //do what you want to do with your image
    });

});
dispatch_release(queue);

有关详细信息,请参阅dispatch_queue_t