NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:[getImage objectAtIndex:indexPath.row]]];
cell.imageView.image = [UIImage imageWithData:imageData];
我从服务器获取图像并在UITableView
上显示它们。我发现滚动速度非常慢。如何删除它?
答案 0 :(得分:0)
即使对于最近显示的单元格,也会频繁调用该数据源方法,因为iOS希望减少tableview中的单元格总数,因此它将销毁不再可见的单元格,并要求tablview数据源方法重新创建它们当它们变得可见时。
如果您从服务器获取每个细胞群调用,那么它一定很慢(轻描淡写)。
实施一些缓存并从缓存中填充您的内容。
答案 1 :(得分:0)
当您拨打此代码时:
[[NSData alloc] initWithContentsOfURL:...]
这是通过网络接触以获取数据。这可能需要几秒钟(或更长时间),而您希望保持每秒60帧的绘图。这意味着您的tableView:cellForRowAtIndexPath:
方法应该在1/60秒或16毫秒内执行,因此网络调用是不可能的。
编写此代码的适当方法是异步加载数据(使用Grand Central Dispatch或其他机制),将其缓存在磁盘上或使用NSCache
,然后通知表视图应重新加载以显示新的数据。