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
}
答
UITableViewCells工作作为一个懒惰的变种,它们被初始化的第一次使用,并保持活力,只要是初始化它们是活的,是在那一刻发生在寄存器中的UITableView:forIdentifier:被调用。如果您正在使用故事板,那是为您完成的。
为什么这样做?每个单元都可以使用dequeueReusableCellWithIdentifier重新使用,所以如果需要的话,UITableView会保留一个活动实例。
如果你需要清除一些数据,只需拨打prepareForReuse上的UITableViewCell
我想,其原因是表视图细胞被重用,所以他们实际上并没有被删除,刚刚回归细胞库实际。 – reviver
您的单元格不会被初始化,直到表视图被初始化,那是因为tablew视图持有它的强烈参考 –
:)当然。谢谢。 – ervanux