异步加载uitableview中的照片

时间:2015-09-23 22:54:44

标签: ios multithreading uitableview

在我的应用程序中,我在cellforrowatindexpath中加载了单元格的照片,但它在很长一段时间内需要主线程,当我滚动时,我的应用程序停止了一段时间。 我该怎么办?如果我添加异步线程,它会在每次滚动时调用它,并且可能有2个或更多相等的照片加载请求,这不是很好......有没有没有意大利面编码的想法?

1 个答案:

答案 0 :(得分:2)

尝试SDWebImage框架

https://github.com/rs/SDWebImage

示例代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *MyIdentifier = @"MyIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:MyIdentifier];
    }

    // Here we use the new provided sd_setImageWithURL: method to load the web image
    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"Get each url from array and set it here using indexpath.row"]
                      placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    cell.textLabel.text = @"My Text";
    return cell;
}

它支持各种功能,如缓存等。