RestKit
中是否有一个包装器或某种内置功能可以使用回调或块异步加载来自UIImage
的{{1}}?我在NSURL
文档中找不到这样的方法。如果没有,那么尽可能使用 RestKit
从NSURL
实施延迟加载的异步图像的好策略是什么?
答案 0 :(得分:19)
不确定RestKit解决方案,但是SDWebImage是一个库,可以让你通过向UIImageView添加一个类别来异步加载图像,所以你要编写的就是这个(例如):
[myImageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
答案 1 :(得分:5)
使用RestKit,您可以使用RKRequest
以下列方式加载图像数据:
RKRequest* request = [RKRequest requestWithURL: url];
request.onDidLoadResponse = ^(RKResponse* response) {
UIImage* image = [UIImage imageWithData: response.body];
// do something interesting with the image
};
request.onDidFailLoadWithError = ^(NSError* error) {
// handle failure to load image
}
[imageLoadingQueue addRequest: request];
请注意,即使在onDidLoadResponse
情况下,您也可能需要检查response
以确保数据类型符合您的预期。上面使用的图像加载队列可以这样创建:
imageLoadingQueue = [RKRequestQueue requestQueueWithName: @"imageLoadingQueue"];
[imageLoadingQueue start];