下载数据以在另一个线程上填充UITableViewCell中的“占位符”以防止滞后

时间:2012-11-01 13:39:45

标签: iphone ios multithreading uitableview

我所拥有的是一个带有UITableViewController的应用程序,它充满了自定义UITableViewCells。我有一些数据可用于提供细胞,但我需要下载一些额外的内容(图片等)。

所以我在viewDidLoad方法中做了什么,我初始化一个UITableViewCell对象,用我已经可用的信息填充所有标签。然后我启动一个单元类的方法来下载数据。在完成特定单元格之后,我将其放入NSMutableArray并继续下一个单元格。

然后在cellForRowAtIndexPath方法中,我从可变数组返回特定​​索引处的单元格。

在没有下载所有数据之前,我的tableView被卡住了......我不确定这是否是正确的方法,但我想我必须启动下载然后填充的方法另一个线程上的单元格的额外内容。我怎么能这样做?

提前多多感谢!

1 个答案:

答案 0 :(得分:0)

根据rckoenes的建议,使用AFNetworking可以正常工作! :)我想对于那些仍然没有ARC的人来说,替代方案是ASIHTTPRequest。

以下是我下载图片的代码:

-(void)getImageFromUrl:(NSURL *)url{
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFImageRequestOperation *op = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *img) {
        [self.image setImage:img];

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {

    }];
    [op start];
}