Objective-C學習-數組 NSArray 和 NSMutableArray

  在學習 Objective-C的過程當中,感受數組在這一個學習方面是一個比較大的應用域,因此寫這篇隨筆來總結一下。數組

  首先聲明的是,與C語言的數組不一樣,Objective-C的是數組只能用來存儲對象,而不是存儲int 、double、char等基礎數據類型,通常要存這些基礎數據類型,對於我這個剛學 Objective-C的新手來講,個人作法是將有關數字的基礎類型 如 int 、double、char首先轉換成一個叫作 NSNumber的類  char*類型的轉換成  Objective-C的字符串  NSString 類來進行儲存,相關 NSNumber 和 NSString 在之後我學習到的時候會來總結一下個人學習成果。學習

 

 

       Objective-C的數組分爲兩種,一種叫作不可變數組(NSArray),一種叫作可變數組(NSMutableArray),NSMutableArray類是NSArray類的一個子類。spa

  (1)不可變數組(NSArray) ---------該類型在肯定以後,不能進行數組元素的更改以及交換對象

    //初始化------(兩種方式)rem

 

      NSArray * array =[ [NSArray alloc] initWithObjects:@"abc",@"123",@"ABC", nil];            字符串

      NSArray * array = @[@"abc",@"123",@"ABC"];     //後來看到老師定義數組的時候用這種方式進行的初始化,因此也記錄了下來it

 

  (2)可變數組(NSMutableArray)-------該類型在肯定以後,能夠進行元素的增、刪、改(包括元素的位置 以及 數組的元素個數)  for循環

               //初始化------(兩種方式)table

      NSMutableArray * mutableArray = [[NSMutableArray alloc] init];ast

      NSMutableArray * mutableArray = [NSMutableArray array];   //教個人老師演示時的初始化,兩種初始化有沒有區別,或者不一樣,如今先不討論

    

    //增長元素

      對於可變數組,蘋果給咱們提供了不少方法,由於新手的緣由,我基本也使用了其中的一種      

       [mutableArray addObject:(id)]; //這是mutableArray 對象調用增長元素的一個方法

       例如:[mutableArray addObject:@"EFG"]; //這是在mutableArray 對象中添加了一個NSString 類型的元素,值爲@"EFG"

     

    // 刪除元素     

      [mutableArray removeAllObjects];  //這個方法是移除 mutableArray 中的全部元素         

      [mutableArray removeLastObject]; //這個方法是移除 mutableArray 的最後一個元素

    

      [mutableArray removeObject:(id)]; //這個方法是移除值爲id的元素(這樣描述實際上是不正確的),id實際存放的應該是地址,但字符串除外

      例如:[mutableArray removeObject:@"abc"]; //這是在mutableArray  對象中刪除了一個值爲"abc"的元素

 

      [mutableArray removeObjectAtIndex:(NSUInteger)];  //這個方法是移除位置爲  NSUInteger 的元素,這個數字實際是刪除相似下標爲 NSUInteger的元素

      例如:[mutableArray removeObjectAtIndex:3];  //這是刪除了第4個元素

 

    //修改元素位置

    [mutableArray exchangeObjectAtIndex:(NSUInteger1) withObjectAtIndex:(NSUInteger2)] //這個方法是將位置  NSUInteger1 的元素和 NSUInteger2 的元素進行交換位置

    例如:[mutableArray exchangeObjectAtIndex:1 withObjectAtIndex:2];//意思是將第2個元素和第3個元素交換(由於NSUInteger是下標)

 

  /*****

  ***數組的遍歷 (我所瞭解的目前有三種方式)

     ****/

  一、枚舉器法  (這種方法在遍歷過程當中不能改變數組的個數以及元素的位置,否則會出錯)

      NSEnumerator * enumerator = [mutableArray objectEnumerator];//構造枚舉器

      id obj;

      while (obj = [enumerator nextObject]) {

          //obj既爲元素

      }

 

  二、快速枚舉法  (有的叫作 快速for循環) (這種方法依舊在遍歷過程當中不能改變數組的個數以及元素的位置,否則會出錯)

      for(id obj in mutableArray){

          //obj既爲元素

      } //這種方法他們都說是最快的,我也就看成最快的來用

 

   對於枚舉器,還有一種叫作逆序枚舉器,方法以下  

    NSEnumerator *enumrator = [mutableArray reverseObjectEnumerator];//構造逆序枚舉器,用法同枚舉器同樣,但不同的是,用逆序枚舉器遍歷的時 候,以上兩種方法能夠改變數組的個數以及元素的位置。

 

  三、使用for循環進行遍歷 (這種遍歷方法能夠在循環中改變數組的個數以及元素的位置)

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

          id obj = [mutableArray objectAtIndex:i];// obj既爲元素

      }

相關文章
相關標籤/搜索