将图像加载到缓存中

时间:2012-06-19 10:06:53

标签: iphone objective-c ios caching uiimage

我在xml解析endElement方法中有以下用于从url加载图像的代码:

food.image=strVal;
NSData *data=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:strVal]];
UIImage *image=[[UIImage alloc]initWithData:data];
food.myImage=image;

虽然我在应用程序结束时使用此加载的图像,但我的应用程序必须等到所有图像都加载完毕。我应该在这里使用缓存,但我很困惑如何在此应用程序中使用缓存。还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

尝试此代码,这不会在主线程上产生负载: -

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);

dispatch_async(queue, ^{

    NSData *data=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:yourURL]];
    UIImage *image=[[UIImage alloc]initWithData:data];

    dispatch_sync(dispatch_get_main_queue(), ^{
        [yourImageView setImage:image];

    });
});