UITableView - 从NSBundle加载大型UIImages而不阻塞主线程

时间:2011-09-28 08:58:36

标签: objective-c ios uitableview asynchronous uiimage

在UITableViewController中,调用此方法时,UI会冻结: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

将图像加载到UITableViewCell中。

cell.imageView.image = [UIImage imageWithContentsOfFile:@"filePath"];

文件本地存储在文档文件夹中 - 这不是远程调用。 我知道在创建单元格时加载图像会导致主线程冻结,如果这是一个远程调用我会使用同步加载,但你会怎么做? 为本地文件做吗?

*图像大约是500k。

需要帮助。感谢。

1 个答案:

答案 0 :(得分:0)

例如,创建单独的线程,您将在其中加载图像并在某些array中保存对它们的引用。当准备好所有图像(或其中的某些部分)时,您可以reload cell包含该消息。

table view controller中,您应检查image是否已加载cell,如果只是参考并设置了cell.imageView.image