IOS全局记录当前的 cell 会发生奇怪的值对不上.

全局记录当前点击的cell

这样获得当前点击的cell

此时 假设此时取的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 结构体是值类型.当取的一个结构体时,当原 结构体改变时取的结构值不会跟着改变.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容