我从tableviewcell中的API加载图像,每次向下滚动UITableView时都会下载图像。那么保存此图像的最佳方法是什么,因此如果图像已经存在,则无需再次下载图像?
同样的文字,如何保存文字...
答案 0 :(得分:2)
如果它不是很大,您可以下载一次并将其保存到用户首选项(NSUserDefaults
)作为NSData
对象。适合我。
或者,您可以使用NSUrlConnection
的异步请求,并以您喜欢的任何方式实现缓存。 (例如,每周只更新一次图像。)
此外,即使NSUrlConnection
的默认缓存设置也可能足够好
More on caching
修改强>
异步请求的一个例子。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString: url]];
URLConnectionDelegate *delegate = ...;
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
delegate:delegate];
if (!connection) {
// something went wrong
}
在委托中,您主要需要处理接收数据和完成连接的方法
假设你有NSMutableData *receivedData
个对象。
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// success, do whatever you want with data
[receivedData release];
[connection release];
}
上面的链接和API documentation提供了有关委托结构的更多详细信息。
答案 1 :(得分:2)
查看iOS站点示例代码部分中的LazyTableImages示例应用程序。它有一个很好的例子,说明如何使用NSUrlConnection异步调用下载表格单元格的图像,并将图像(和文本)存储在NSMutableArray中。
此示例演示了一个多阶段 加载和显示的方法 UITableView的。它首先加载 来自RSS feed的相关文本所以 表可以尽快加载, 然后下载每个图像 异步行,所以UI更多 响应。