15

有什么不同?

在我的上下文中,我需要能够动态添加和删除对象。用户单击表中的行来检查是否打开,从而从列表中添加或删除引用的对象。

一个疯狂的猜测是数组有索引项,而 set 没有索引?

4

4 回答 4

29

NSSet/NSMutableSet不按任何特定顺序保留项目。NSArray/确实以NSMutableArray特定顺序存储项目。如果您正在构建表格视图,则绝对应该使用数组作为您选择的数据源。

于 2009-07-29T21:24:06.403 回答
23

此外,NSMutableSet 确保所有对象都是唯一的。

NSMutableArray 与 UITableView 配合得很好,因为元素具有索引,因此您可以返回 [array count] 以获取表格行数,或返回 [array objectAtIndex:rowNumber] 以轻松地将元素与行关联。

于 2009-07-29T21:39:32.857 回答
3

此外,根据文档,使用 NSSet 可以更快地测试对象成员资格。

当元素的顺序不重要并且测试对象是否包含在集合中的性能是一个考虑因素时,您可以使用集合作为数组的替代方案——虽然数组是有序的,但成员资格测试比使用集合要慢。

于 2012-08-14T22:05:03.293 回答
0

那么有3个主要区别。1) 集合是无序的 2) 没有索引 & 3) 在数组被排序、索引 & 可以存储重复值的地方不能有重复值。

于 2015-12-19T00:32:10.717 回答