Tag: Cellforrow

快速了解UITableViewCell可重用性

总览 表格视图在单个列中显示项目列表。 UITableView是UIScrollView的子类,尽管UITableView仅允许垂直滚动,但它允许用户滚动表。 组成表格中各个项目的单元格是UITableViewCell对象; UITableView使用这些对象绘制表的可见行。 Tableview不会在每次调用行单元格时都初始化单元格,它会重用 em。 明显!! every‍♂️每个人都知道,但问题是“ 如何?” ”。 诸如TableView之类的Apple API使用称为“ 对象池 ”的东西来进行管理。 对象池 对象池是一种设计模式,它可以重复使用🔄一组预初始化的对象,或者可以说它维护了实际需要的对象池,然后又一次又一次地重复使用它。 Tableview充当池的客户端,当它请求对象时,池将从池中返回一个实际项目,该项目可重复使用,而不是每次都初始化一个新对象。 当客户端完成对象处理后,该对象将返回到池中以供重用。 对象池用于提高性能,因为没有创建或销毁对象,而是将它们从池中抽出并在使用后返回给对象,从而节省了更多时间和内存复杂性。 在TableView的情况下很容易理解。 创建单元时,它是从池中提取的,在完成其工作时,或者万一可以说,在TableView中完成显示将返回到池中。 对象池的实现: 让我们尝试为自己创建对象池。 让我们创建一个可用于约束通用池项的协议。 协议可重复使用{ 函数重用() } 我们可以在协议中添加重用函数,在该协议中,当元素从池中重用时,我们可以重置视图以重用它,并重设视图(​​reuse)。 类ResuableCell:UITableViewCell,可重用{ 函数重用(){…} } 现在我们可以建立对象池了。 Pool { 私有let maxElement:Int 私人让生产者:()-> T public init(maxElementCount:Int,producer:@escaping()-> T){ 自我生产者=工厂 self.maxElement = maxElementCount } } maxElement是我们要在池中进行初始化的元素的最大数量,就像我们在TableView中具有numberOfRows或numberOfSections一样。 生产者函数需要告诉我们如何制作通用元素 我们需要再添加两个绘制和释放功能,例如在TableView中,该单元格在屏幕上显示后将被释放。 Pool { 私有let maxElement:Int […]