Ios 使用大量单元格优化UIViewTable
我有一个表格,其中有多达1600个单元格,每个单元格包含一行文本和一张图片。正如您可能期望的那样,滚动时会非常滞后。如何让不可见的单元格(例如,离可见单元格有两个屏幕)自行卸载?还有其他方法可以减少滞后吗 更新单元格的代码:Ios 使用大量单元格优化UIViewTable,ios,uitableview,optimization,Ios,Uitableview,Optimization,我有一个表格,其中有多达1600个单元格,每个单元格包含一行文本和一张图片。正如您可能期望的那样,滚动时会非常滞后。如何让不可见的单元格(例如,离可见单元格有两个屏幕)自行卸载?还有其他方法可以减少滞后吗 更新单元格的代码: func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ var cell: UITableViewC
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
var cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell
var item = receivedData[indexPath.row] as NSDictionary
var imgURL:NSURL = NSURL(string: item["url"] as NSString)
var imgData = NSData(contentsOfURL: imgURL)
cell.image = UIImage(data: imgData)
cell.text = item["name"] as NSString
return cell
}
- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString*)标识符李>
检查单元格是否被重用。UITableView默认使用延迟加载,因此屏幕外的任何内容都会自动卸载。延迟是由于调用过多的
[table reloadData]
或由于单元加载时间过长造成的。@Putz1103问题可能在于单元不可重复使用?在任何情况下都应释放它们。但是,重新制造细胞是苹果试图解决可重复使用细胞问题的一个瓶颈。如果你的细胞都是一样的,那么重新使用它们将是一个好主意。@Putz1103好吧,我使这种细胞样式可重复使用。仍然非常滞后。我通过添加一个原型单元并向其中添加标识符MyPrototypeCell
来设置情节提要中的单元标识符。在ViewController声明中,您正在使用dequeueReusableCellWithIdentifier创建UITableViewCell的代码中有var-cellIdentifier:NSString=“MyPrototypeCell”
。没有检查单元格是否为零。在异常情况下,UITableViewCell的alloc init不存在。2.您从NSURL加载的图像可能需要时间在单元中更新,因为它必须从服务器加载。您可以在后台使用调度队列
实现这一点。好的,感谢您注意检查,但我仍处于早期开发阶段,因此我现在有更大的问题要担心。那么,问题可能在于不断地重新加载?什么是缓存这些图像的简单而好的方法?