Swift中由找不到removeAll(where:)方法引起的连锁反应(下)

提示:本篇博文涉及到第三方库Eureka,但核心思想在于Swift内部数据处理的推断,不了解Eureka并不影响对本文的理解。Eureka只不过是对UITableView的便捷包装而已,需要进一步了解Eureka的童鞋可以观赏本猫Eureka学习系列博文。

上篇在此 : Swift中由找不到removeAll(where:)方法引起的连锁反应(上)

化繁为简,以管窥豹

为了能够明白为什么removeAll(where:)可以正确处理多个Row的删除,我们需要先看一下与其相关的两个方法:

//删除全部Row
func removeAll(keepingCapacity keepCapacity: Bool = false)

//删除指定位置的一个Row
func remove(at position: Int) -> BaseRow

这两个方法都是RangeReplaceableCollection协议必须遵守的方法.因为源代码并不长,所以这里贴出来供大家参考,首先是删除全部Rows:

public func removeAll(keepingCapacity keepCapacity: Bool = false) {
   // not doing anything with capacity
    for row in kvoWrapper._allRows {
        row.willBeRemovedFromSection()
    }
    kvoWrapper.rows.removeAllObjects()
    kvoWrapper._allRows.removeAll()
}

由上可知删除全部Cell其实就是删除Section中kvoWrapper对象中的全部ro

大熊猫侯佩 CSDN认证博客专家 Swift Objective-C Xcode
非自由程序员,CSDN博客认证专家。
CSDN汇编板块版主, CSDN其他开发语言大版版主。

对App、以及Cocos2D、SpriteKit游戏开饶有兴趣。目前常用的语言是ObjC、Swift、Ruby等。不过看到编程艺术、ASM、逆向和C时依然欲罢不能。虽然不是,但喜欢黑客的思维和哲学,认为社会工程学很酷,但还没有实际用来撩过妹。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付 39.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值