我创建了基本的Cell类并在故事板上映射了单元格。删除操作后,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
}
答案 0 :(得分:3)
UITableViewCells作为一个惰性var工作,它们在第一次使用时被初始化,并且只要初始化它们的UITableView处于活动状态,它就会保持活动状态,这发生在寄存器:forIdentifier:被调用的那一刻。如果您正在使用故事板,那就是为您完成的。
为什么要这样做?可以使用dequeueReusableCellWithIdentifier重新使用每个单元格,因此UITableView会保留一个实例,以便在需要时使用。
如果您需要清理一些数据,只需在UITableViewCell上调用prepareForReuse