NSSet到底什么类型?
其实它和NSArray功能性质一样,用于存储对象,属于集合;
NSSet , NSMutableSet类声明编程接口对象,无序的集合,在内存中存储方式是不连续的
像NSArray,NSDictionary(都是有序的集合)类声明编程接口对象是有序集合,在内存中存储位置是连续的
NSSet和我们常用NSArry区别是:在搜索一个一个元素时NSSet比NSArray效率高,主要是它用到了一个算法hash(散列,也可直译为哈希)
比如你要存储元素A,一个hash算法直接就能直接找到A应该存储的位置;同样,当你要访问A时,一个hash过程就能找到A存储的位置。而对于NSArray,若想知道A到底在不在数组中,则需要便利整个数组,显然效率较低了
NSSet,NSArray都是类,只能添加cocoa对象,如果需要加入基本数据类型(int,float,BOOL,double等),需要将数据封装成NSNumber类型。
*NSSet:
1>无序的、不重复的。存放到NSSet中的内容并不会排序与添加顺序也没有关系
2>通过anyObject来访问单个元素
3>遍历NSSet中的每个元素。通过forin循环来遍历
4>好处:效率高。
5>应用场景:
比如重用Cell的时候,从缓存池中随便获取一个就可以了,无需按照指定顺序来获取
当需要把数据存放到一个集合中,然后判断集合中是否有某个对象的时候
*NSArray
1>有序的、可以有重复对象。对象的顺序是按照添加的顺序来保存的
2>好处:有序访问
3>应用场景:在绝大多数需要依赖顺序的情况下(比如tableView的数据源集合,在实际操作中要根据下标来获取对象)
3>通过下标来访问