如何使用GCD更快地加载信息表

时间:2014-01-27 07:23:40

标签: ios objective-c grand-central-dispatch

目前我正在加载所有UITableViewControllers图片和文字。我不确定是否有办法缩短加载时间。我认为GCD可能是最好的路线,但是,我不太确定我是否正确使用它:

dispatch_async(dispatch_get_main_queue(), ^{

        [some method];

    });

这是加载到ViewDidLoad,我不确定这是否是使用GCD的正确位置。另外,是异步加载信息的正确方法吗?

2 个答案:

答案 0 :(得分:0)

使用它,它会在不同的线程中下载多个文件。它的异步。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //load image here
    });

如果你想加载所有图像,甚至是tableView中可能非常低的图像(比如第20行的图像)。那么viewDidLoad是完美的方法,或者如果你只想加载当前要显示的图像,然后在cellForRow中下载图像:atIndexPath方法。

或者,您可以使用AFNetworking更有效地下载多个文件。

希望这有帮助

答案 1 :(得分:0)

为了在表格视图单元格中更快地加载图像,您可以使用SDWebImage

使用起来非常简单。只需将SDWebImage文件夹导入Xcode项目即可。它包含UIImageVIew上的类别。所以在任何imageView对象上只需调用方法 setImageWithURL ,如下图所示:

- (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] autorelease];
}

// Here we use the new provided setImageWithURL: method to load the web image
[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

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

}