objective-C学习笔记(八) 集合类型 Collection Types
OBJC的集合类型:
1.数组 Array
2.Set
3.键值对 Dictionary
数组:OC中的数组被定义为class,引用类型。索引从0开始,访问越界会抛出运行时异常。
NSArray的元素必须是对象,即NSObject的子类。
值类型必须用NSNumber封装为对象类型后,才能放入数组中。
C语言结构类型的话,用NSValue封装为对象类型后,才能放入数组中。
数组元素可以是不同对象类型,可能会有类型不安全。
NSArray具有常量性:长度和元素指针都不能更改,但指针指向的对象内部可以更改。
NSMutableArray是可变数组,和可变字符串一样,手动分配空间capacity的时候,要预估好空间,不然超出的话要花很大的内存代价。
数组遍历:
最快——FastEnumeration 快速枚举 优化了索引检查和动态消息调用
较慢:NSEnumerator 迭代器遍历 和传统for循环
数组查找:
indexOfObject 查找是否存在"值相等"的对象(需要重写isEqual改为比较值相等)
indexOfObjectIdenticalTo 查找是否存在“指针相等”的对象
数组排序:
不改变原数组(常量性)
集合、键值对也和数组差不多。元素都是对象,也不可变,也有对应的可变类。