

此时 假设此时取的cell indexPath = [0,a]
这样的方式记录的cell是不可信的.currentCell 记录了当前点击的cell的地址如: 0x00898728
因为当tableView 刷新后
self.tableView.reloadData()
所有的cell 会重新刷新并被重用.
虽然currentCell 还是指向地址如: 0x00898728
但此时 地址如: 0x00898728 的cell 可能被 indexPath [0,x]的cell 重用
一旦“x”不是“a”那么如果此时去判断 currentCell 的值将是 ‘x’的cell的值.
此时的判断 将不再正确.如取得 cell.index 就是 [0,x] 导致后续逻辑不可靠
如何解决呢. 我暂时想到的 有两个办法:
1:再currentCell的判断被消费掉之前不能 tableView.reloadData()
2:以indexPath 去做 记录.这样可以获得的cell的地址 可能不一样,但是 cell的值是可靠的.
以上就是困扰了我一个多小时才找到的 “bug”
灵感:swift 结构体是值类型.当取的一个结构体时,当原 结构体改变时取的结构值不会跟着改变.
网友评论