我一直都知道NSArray中的数据是连续存储在计算机的内存中(一个接一个的对象)。我的问题是如何存储NSSet?如果每个对象存储在计算机内存中的不同位置,那么它会比数组慢吗?
干杯
NSSets是否更像链接列表?
答案 0 :(得分:3)
NSArray
使用的存储空间未记录在案。而且你不应该假设所有数组都是一样的。在ridiculousfish.com上有一篇很好的文章,Our arrays aren’t。
如果您想知道您的要求最快的是什么。您必须自己进行测试,或者更具体地说明您打算如何使用NSSet
。
答案 1 :(得分:2)
使用NSArray
还是NSSet
不应该取决于它们的性能特征,而应该取决于您想要表示的语义。
NSArray
是一个有序集合 - 没有漏洞 - 由索引访问的项目。允许重复。
NSSet
是无序的,不能存储两次相同的对象。
如果不知道自己想做什么,就很难说出更多。
答案 2 :(得分:2)
创建NSArray比创建NSSet要快得多。但是在NSSet中搜索所有对象比在NSArray中搜索所有对象要快得多,尤其是使用indexOfObject:
方法搜索NSArray。 (您可以自己测试,10,000个对象应该足以向您展示差异。)
但是当你选择应该使用哪种时候,速度并不是最重要的考虑因素。
如果要确保一个对象只应存储在ONCE上,请使用NSSet,否则使用NSArray,您的对象将在插入时存储多少次。当然,NSArray的对象也是有序的。
答案 3 :(得分:1)