OC——Foundation—常用的类(2)----NSArray

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操作(这个原则还适用于其他集合:NSIctionary\NSSet等)
 
排序方法参考NSArray排序,排序所调用的方法返回值不同,可变数组,使用无返回值的方法,不可变数组使用带返回值的方法
 
 

posted on 2015-04-09 14:48  hqzxB了个B  阅读(133)  评论(0编辑  收藏  举报