1. 数组
数组是一个有序的元素序列,其内部只能存放对象类型,对于基本数据类型需要用NSNumber包装成对象后存放,对于C语言的Struct类型,需要用NSValue包装对象后存放。
它的索引是从0开始,其索引大小大于数组长度时,会抛出索引越界运行时异常。
1.1 NSArray(固定数组)
NSArray具有常量性,其长度和元素均不能被更改。但元素对象指针指向的内容可以修改。
遍历方式:
// for in 方式,最快的迭代方法
for (MyPoint* p in arr) {
NSLog(@"%p",p);
}
// 迭代器方式
NSEnumerator* enumerator = [arr objectEnumerator];
MyPoint* p = nil;
while (p = [enumerator nextObject]) {
NSLog(@"%@",[p description]);
}
// for 循环
for (int i = 0; [arr count]; i++) {
id p = [arr objectAtIndex:i];
NSLog(@"%@",[p description]);
}
1.2 NSMutableArray (可变数组)
NSMutableArray 是 NSArray的子类,可更改自身的长度、及元素。与NSMutableString 一样初始化指定一个capacity的值,为元素的数据。当长度增长时,会以capacity二倍的方式增长。
虽然它给我们提供了很多操作数组的方法,但是我们也应该尽量去避免使用insertObject 和 removeObject等这种会改变数序列的操作,因为涉及到大量的内存拷贝操作。
2. Set 集合
分为NSSet,NSMutableSet,前者不可变,后者可变。
Set是一个无序、无重复元素的集合。引用类型!
遍历的方式:Fash Enumeration和NS Enumerator。
3. Dictionary 字典
NSDictionary NSMutableDictinary(可变)
键 值对无序集合,key是唯一,value可重复
遍历的方式:Fash Enumeration和NS Enumerator
网友评论