UITableViewCell对象deinit从未调用

问题描述:

问题出在我的项目中。但我也尝试在新的Xcode草案项目中,主 - 细节应用程序之一。UITableViewCell对象deinit从未调用

我已经创建了基本单元类,并在故事板上映射了单元格。删除操作后,deinit从不会调用。对细胞没有强或弱的参照。

class Cell:UITableViewCell { 
    deinit{ 
     print("Deinit Called") 
    } 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell 

    let object = objects[indexPath.row] as! NSDate 
    cell.textLabel!.text = object.description 
    return cell 
} 
+2

我想,其原因是表视图细胞被重用,所以他们实际上并没有被删除,刚刚回归细胞库实际。 – reviver

+2

您的单元格不会被初始化,直到表视图被初始化,那是因为tablew视图持有它的强烈参考 –

+0

:)当然。谢谢。 – ervanux

UITableViewCells工作作为一个懒惰的变种,它们被初始化的第一次使用,并保持活力,只要是初始化它们是活的,是在那一刻发生在寄存器中的UITableView:forIdentifier:被调用。如果您正在使用故事板,那是为您完成的。

为什么这样做?每个单元都可以使用dequeueReusableCellWithIdentifier重新使用,所以如果需要的话,UITableView会保留一个活动实例。

如果你需要清除一些数据,只需拨打prepareForReuse上的UITableViewCell