NSArray

NSArray

  一 oc的数组可以存储不同类型的对象。。java/c/c++ 则不可以。。

    oc只能存储对象 内存空间是连续的。。只保存对象的指针 占得空间也比较小。

  

  二 初始化 

    

NSArray *array1 =[[ NSArray alloc] initWithObjects:@"1",@"2",@"3",nil];

    

     三  方法

    1 数组的长度 count

        

int arrayCount = (int)array1.count;

    2 是否包含对象 (BOOL) containsObject:

    3 得到最后一个对象 lastObject

    4 得到第一个对象 firstObject

    5 取出指定的对象  objectAtIndex:

    6 打印元素对应的下表 (元素不存在打印-1)indexOfObject:

 四 数组的遍历

    1  for循环

    2 for in 快速枚举

    3 枚举器(迭代器)

for(int i =0; i<array1.count.i++){
      
       NSString *str = [str objectAtIndex:i];            
}
//如果使用快速枚举,则数组要保持类型一样

     for(NSString *str in array1){

    
     }
NSEnumerator *enumerator = [array objectEnumerator];
id obj = nil;
while(obj = [enumerator nextObject]){
    NSLog(@"obj=%@",obj);
}
#pragma mark 普通遍历
void arrayFor1(){
    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    int count = array.count;
    for(int i=0; i<count; i++){
        id obj = [array objectAtIndex:i];
        NSLog(@"%i-%@",i, obj);
    }
}

#pragma mark  快速遍历
void arrayFor2(){
    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    int count = array.count;
    int i=0;
    for(id obj in array){
        NSLog(@"%i-%@",i, obj);
        i++;
    }
}

#pragma mark  利用block遍历
void arrayFor3(){
    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%zi->%@",idx, obj);
      //  *stop = YES; //改变外边的Bool,终止遍历
    }];
}
#pragma mark 利用迭代器
void arrayFor4(){
    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    NSEnumerator *enumerator = [array objectEnumerator];
    //如果放到遍历之后,则取到空,原因是,遍历完了,就没值了
    NSArray *array2 = [enumerator allObjects];
    NSLog(@"array2:%@", array2);
    
    //获取下一个需要遍历的元素
    id obj = nil;
    while (obj = [enumerator nextObject]) {
        NSLog(@"obj=%@", obj);
    }
原文地址:https://www.cnblogs.com/cooking/p/4914380.html