【发布时间】:2014-06-14 23:30:09
【问题描述】:
假设我想删除行或向表中添加行。我修改数据源并让表进行更新或使用 UITableView 的 insertRowsAtIndexPaths:withAnimation: 和 deleteRowsAtIndexPaths:withAnimation: 选择器是否更聪明?每当我尝试修改实际数据源数组时,它的大小也用于在数据源的 tableView:numberOfCellsInSection: 协议方法中确定,我会抛出一个错误,指出该表之前每个部分必须具有相同数量的单元格,并且表更新后。数据源数组本身是一个 NSMutableArray;当我使用 deleteRowsAtIndexPaths 和 insertRowsAtIndexPaths 选择器时,这个数组会自动更新吗?我会假设不会。但是如何在更新数据源数组的同时添加或删除行?
【问题讨论】:
-
NSMutableArray的行为与自动释放或复制无关。但如果您不确定,您可以随时查看the docs:为了填补空白,所有超出索引的元素都会通过从索引中减去 1 来移动。 -
@Caleb 坦率地说,我将其发布为一个问题,因为在一般的 stackoverflow 或谷歌搜索中没有出现像样的文档。我发现每次遇到程序问题时都采用“自己尝试”的方法效率很低。事实上,当我停下来继续做其他事情时,我很快就得到了答案
-
@Savagewood 根据 Caleb 的链接,在这种情况下,答案在 Apple 的官方文档中明确给出,可直接在 Xcode 中获得。
-
感谢@Tommy 我的愚蠢没有那么容易找到。至于复制和原子属性,它们确实会在检索期间影响属性的状态,即在使用多线程时将它们设置为不同的值。我修改了我的问题,使其更具体地针对我试图解决的确切问题。
标签: objective-c arrays uitableview nsmutablearray