Ios 使用大量单元格优化UIViewTable

Ios 使用大量单元格优化UIViewTable,ios,uitableview,optimization,Ios,Uitableview,Optimization,我有一个表格,其中有多达1600个单元格,每个单元格包含一行文本和一张图片。正如您可能期望的那样,滚动时会非常滞后。如何让不可见的单元格(例如,离可见单元格有两个屏幕)自行卸载?还有其他方法可以减少滞后吗 更新单元格的代码: func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{ var cell: UITableViewC

我有一个表格,其中有多达1600个单元格,每个单元格包含一行文本和一张图片。正如您可能期望的那样,滚动时会非常滞后。如何让不可见的单元格(例如,离可见单元格有两个屏幕)自行卸载?还有其他方法可以减少滞后吗

更新单元格的代码:

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
}
  • 从外观上看,CellForRowatineXpath方法中使用了cellIdentifier,因为cellIdentifier没有静态声明

  • 在viewDidLoad中注册单元标识符

    • (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString*)标识符

  • 检查单元格是否被重用。

    UITableView默认使用延迟加载,因此屏幕外的任何内容都会自动卸载。延迟是由于调用过多的
    [table reloadData]
    或由于单元加载时间过长造成的。@Putz1103问题可能在于单元不可重复使用?在任何情况下都应释放它们。但是,重新制造细胞是苹果试图解决可重复使用细胞问题的一个瓶颈。如果你的细胞都是一样的,那么重新使用它们将是一个好主意。@Putz1103好吧,我使这种细胞样式可重复使用。仍然非常滞后。我通过添加一个原型单元并向其中添加标识符
    MyPrototypeCell
    来设置情节提要中的单元标识符。在ViewController声明中,您正在使用dequeueReusableCellWithIdentifier创建UITableViewCell的代码中有
    var-cellIdentifier:NSString=“MyPrototypeCell”
    。没有检查单元格是否为零。在异常情况下,UITableViewCell的alloc init不存在。2.您从NSURL加载的图像可能需要时间在单元中更新,因为它必须从服务器加载。您可以在后台使用
    调度队列
    实现这一点。好的,感谢您注意检查,但我仍处于早期开发阶段,因此我现在有更大的问题要担心。那么,问题可能在于不断地重新加载?什么是缓存这些图像的简单而好的方法?