NSArray
用来存储对象的有序列表,它是不可变的
不能存储c语言中的基本数据类型,如int、float、enum、struct,也不能存储nil
NSArray *array=[NSArray arrayWithObject:@“12345”];
数组创建之后是不可变的,需要在创建的时候就初始化。
当把一个对象塞进数组时,这个对象的计数器会加1.
NSArray遍历
- 普通遍历
NSUInteger count = [array count];
for (int i=0;i<count;i++){
id obj = [array objectAtIndex:i];
}
- 快速遍历
for(id obj in array)
- 迭代遍历器
NSArray *array=[NSArray arrayWithObjects:@“123”,@“456”]; //获取数组的迭代器,正序 NSEnumerator @eunm=[array objectEnumerator]; //获取下一个需要遍历的元素 id obj =nil; while(obj=[enum nextObject]){ NSLog(@“obj=%@“,obj); }
反向迭代器:NSEnumerator *enum=[array reverseObjectEnumerator];
- block遍历
[array enumerateObjectsUsingBlock:^(id object,NSUInteger index,BOOL *stop){
NSLog(@“%@-%zi”,object,index);
}]
- 迭代器遍历:获取数组中所有元素 NSArray *array = [enumerator allObjects];
allObjects 是取出没有被遍历过的对象
NSArray派生出新的集合
- -(NSArray *)arrayByAddingObject:(id)anObject
添加一个元素,返回一个新的NSArray(方法调用者本身没有改变)
- -(NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray
添加otherArray的所有元素,返回一个新的NSArray(方法调用者本身没有改变)
- -(NSArray *)subarrayWithRange:(NSRange)range
截取range范围的数组元素
NSArray其他方法
- -(NSString *)componentsJoinedByString:(NSString *)separator
用separator作拼接符将数组元素拼接成一个字符串
- -(BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile
将一个NSArray持久化到文件中去
如果要将一个文件的内容读取到数组中,文件内容必须遵守一定的格式
NSMutableArray(可变数组)
- 可变的NSArray,NSArray的子类,可以随意的添加或者删除元素
- 创建NSMutableArray的方法
NSMutableArray *array=[NSMutableArray arrayWithObject:@“1”]; //添加元素 [array addObject:@“2”]; //删除元素 [array removeObject:@“1”]; //删除最后一个元素 [array removeLastObject] //删除所有元素 [array removeAllObjects];
也可以使用创建NSArray的方法来创建NSMutableArray
- 当一个元素被加到集合中时,会执行一次retain操作;当一个元素从集合中移除时,会执行一次release操作;当集合被销毁时(调用了dealloc),集合里的所有元素都会执行一次release操作(这个原则还适用于其他集合:NSIctionaryNSSet等)
排序方法参考NSArray排序,排序所调用的方法返回值不同,可变数组,使用无返回值的方法,不可变数组使用带返回值的方法