我正在观看旧的WWDC视频,在他们的splitViewController示例中,他们在splitViewController的委托方法中执行此操作:
NSMutableArray *toolBarItems = [[toolbar items] mutableCopy];
[toolbarItems removeObjectAtIndex:0];
[toolbar setItems: toolbarItems animated YES];
[toolbarItems release];
在某些方法中为您的数据制作这样的mutableCopy是否有一般的良好做法?我之前没有见过这个,作为一个新程序员,不知道何时或为什么我会/应该使用一些东西而不是原件。我想我可以在列表中看到它已经以某种方式订购,也许我会复制它以不同的方式重新排序。但我不知道这是否是他们的推理,以及是否有其他最佳做法可以做到这一点。谢谢!
答案 0 :(得分:4)
可变意味着可以改变。因此,如果您需要更改阵列,则需要获取它的可变版本。 NSArray
暗示NS(Immutable)Array
意味着您无法更改其数据。
答案 1 :(得分:2)
在您提供的示例中,[toolbar items]提供的数组是不可变的。如果你想改变它,你必须制作一个可变版本,修改那个,然后通过其setItems:animated:方法将修改后的副本传回工具栏。在这种情况下的修改是删除数组中的第一个工具栏项,但重申一下,您不能修改不可变数组。