所以我遇到了UITableView的问题。我有自我调整单元格,当UITextView
内部变化时,实际上可以改变高度。当我设置UITableViewController
编辑时,super
会使索引超出范围崩溃。
崩溃发生在这一行:
super.setEditing(editing, animated: animated)
我得到的错误是:
由于未捕获的异常终止应用程序' NSRangeException',原因:' *** - [__ NSArrayM objectAtIndexedSubscript:]:索引7超出空数组的界限'
这个越界崩溃不是由我编写的一行代码引起的,因为我检查了访问数组的每个实例,并且在崩溃发生时没有调用它们。异常断点也指向上面的行,所以我确信这与UITableViewController
的默认setEditing: animated:
实现有关。
有趣的一点是,只有当可调整大小的单元格位于表格视图中时才会出现此错误。当我创建没有它的表视图时,没有问题。如果我保留细胞但没有触及任何约束以使其不会改变其高度,也没有问题。这让我相信某种形式的细胞可以实时改变高度"导致这种奇怪的崩溃,但由于我无法看到UITableViewController
实现中找到导致错误的行,我不知道如何处理这个问题。
由于
修改
事实证明,崩溃的更准确原因是当单元格尝试更改其高度时,这是编辑更改的直接结果。因此,例如,由于带有beginUpdates()
和endUpdates()
的文本视图而仅仅增长或缩小的单元格不会导致任何问题。但是在开始编辑时扩展单元格就是出现这个问题的时候。