TableView滚动缓慢

时间:2014-10-16 13:27:11

标签: objective-c json nsdata

NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[getImage objectAtIndex:indexPath.row]]];
cell.imageView.image = [UIImage imageWithData:imageData];

我从服务器获取图像并在UITableView上显示它们。我发现滚动速度非常慢。如何删除它?

2 个答案:

答案 0 :(得分:0)

即使对于最近显示的单元格,也会频繁调用该数据源方法,因为iOS希望减少tableview中的单元格总数,因此它将销毁不再可见的单元格,并要求tablview数据源方法重新创建它们当它们变得可见时。

如果您从服务器获取每个细胞群调用,那么它一定很慢(轻描淡写)。

实施一些缓存并从缓存中填充您的内容。

答案 1 :(得分:0)

当您拨打此代码时:

[[NSData alloc] initWithContentsOfURL:...]

这是通过网络接触以获取数据。这可能需要几秒钟(或更长时间),而您希望保持每秒60帧的绘图。这意味着您的tableView:cellForRowAtIndexPath:方法应该在1/60秒或16毫秒内执行,因此网络调用是不可能的。

编写此代码的适当方法是异步加载数据(使用Grand Central Dispatch或其他机制),将其缓存在磁盘上或使用NSCache,然后通知表视图应重新加载以显示新的数据。