目前我正在加载所有UITableViewControllers
图片和文字。我不确定是否有办法缩短加载时间。我认为GCD可能是最好的路线,但是,我不太确定我是否正确使用它:
dispatch_async(dispatch_get_main_queue(), ^{
[some method];
});
这是加载到ViewDidLoad
,我不确定这是否是使用GCD的正确位置。另外,是异步加载信息的正确方法吗?
答案 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;
}