您当前的位置: 首页 >  swift

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

发布时间:2018-11-29 12:25:13 ,浏览量:0

提示:本篇博文涉及到第三方库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

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    108253博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0478s