Foundation框架集合 ---- NSArray和NSMutableArray

(1).NSArray :OC中使用的数组,是面向对象,并且是不可变数组。

   1.1OC数组不能存放nil值,只能存放OC对象、不能存放非OC对象类型,比如int、strcut、enum等;

   1.2 C数组  【缺点 : 数据的类型必须相同】

    int a = 3;  

    int number[5]  = {0,1,2,3,4}; 

   1.3 OC数组的创建 【保存的对象可以是不同的对象,但只能保存对象,需要转换成对象才能加入数组】

     NSArray *array = [NSArray array];   // 1.这个数组永远是个空数组

     NSArray *array1 = [NSArray arrayWithObject:@"lh"];  // 2.这个数组只有一个元素,并且永远只有一个元素

     NSArray *array2 = [NSArray arrayWithObjects:@"lh",@"r3",nil];  //3.多个数组实例化方式,以nil结尾,nil是数组元素结束的标记 

         NSArray *array3 = @[@"lh" , @"yg" , @"wy" , @"123"];   //快速创建一个NSArray对象

   1.4 对象方法[array count] ;     获取数组的长度(元素的个数)

             例子  :  NSLog(@"%ld" ,  array3.count] ;  //  4

        [array   objectAtIndex 1] ;  传入数组角标的id得到数据对象,使用索引访问。

          例子 : NSLog(@"%@", [array3 objectAtIndex:1];  // yg

        [array indexOfObject:obj] ;  // for in  遍历    

        [arrayWithObjects:..] ;   向数组对象初始化赋值,这里可以写任意对象的指针,结尾必须使用nil

 

   1.5 NSArray的遍历

    1.5.1 for循环遍历

          Person *p = [[Person alloc] init];    // 创建一个Person类的对象

      NSArray *array = @[p , @"hangda" , @"IOS"];  // 实例化数组

        NSUInterger  count = [array count];

       for(int i = 0 ; i < count; i++){

            NSLog(@"%ld --  %@", i , [array indexAtIndex:i]);

       }

           1.5.2 for  in 遍历

          for(id  obj  in  array){     // id 代表着数组中每一个元素对象

          NSUInter i = [array indexOfObject:obj];

            NSLog(@"%ld - %@",i,obj);

            // 提前结束遍历

               if(i == 1)

              {

                           break;   // 只用于switch 和 循环判断

                       }

           }

      1.5.3 block遍历 , 苹果官方推荐使用,效率高  

       // 每次获取到一个对象元素,就会调用block,并且把当前的元素和索引位置当作参数传递给block

       [arrry enumerateObjectsUsingBlock :

     ^ (id obj , NUInteger idx , BOOL *stop)

     {

         NSLog(@"%ld -  %@ , idx , obj");

         if (idx == 0)
        {

                // 停止遍历  

         *stop  = YES ; // YES == 1 == true

        }

     }

(2) NSMutableArray 可变数组

        2.1 基本使用 (NSMutableArray继承自NSArray , 几乎拥有NSArray的一切方法)

     创建可变数组 NSMutableArray *array = [NSMutableArray array] ;   // 可变

                NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"lh", @"wy" , nil];

     添加元素    // 添加Person类对象元素

              [array1 addObjct:[[Person alloc] init ]; 

            // 添加一个字符串对象元素

            [array1 addOject:@"yanggang"];

              // OC数组添加元素不能为nill(空值)

       删除元素      //删除所有元素  

             [array removeAllObjects];

            // 删除指定对象

           [array removeObject: @"yanggang"];

               //  根据所有删除指定元素

            [array removeObjectAtIndex: 0]; 

可以选择,但是别选择放弃
原文地址:https://www.cnblogs.com/hangdada/p/4985197.html