Objective-C學習-數組 NSArray 和 NSMutableArray(歡迎提意見)

來源:互聯網
上載者:User

標籤:

  在學習 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類的一個子類。

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

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

 

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

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

 

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

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

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

      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是下標)

 

  /*****

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

     ****/

  1、列舉程式法  (這種方法在遍曆過程中不能改變數組的個數以及元素的位置,不然會出錯)

      NSEnumerator * enumerator = [mutableArray objectEnumerator];//構造列舉程式

      id obj;

      while (obj = [enumerator nextObject]) {

          //obj既為元素

      }

 

  2、快速枚舉法  (有的叫做 快速for迴圈) (這種方法依舊在遍曆過程中不能改變數組的個數以及元素的位置,不然會出錯)

      for(id obj in mutableArray){

          //obj既為元素

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

 

   對於列舉程式,還有一種叫做逆序列舉程式,方法如下  

    NSEnumerator *enumrator = [mutableArray reverseObjectEnumerator];//構造逆序列舉程式,用法同列舉程式一樣,但不一樣的是,用逆序列舉程式遍曆的時 候,以上兩種方法可以改變數組的個數以及元素的位置。

 

  3、使用for迴圈進行遍曆 (這種遍曆方法可以在迴圈中改變數組的個數以及元素的位置)

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

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

      }

 

Objective-C學習-數組 NSArray 和 NSMutableArray(歡迎提意見)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.