你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發-OC言語 (四)數組

iOS開發-OC言語 (四)數組

編輯:IOS開發綜合

知識點

1.NSArray

2.NSMutableArray 

 

1.數組的根本用法;

2.數組的遍歷

3.數組排序

 

 

===========   NSArray  不可變數組  =================

 

 

1、OC數組和c數組的區別

C言語的數組:

相反類型變量的有序結合。 類型:可以是簡答數據類型、結構數據類型

int     a[10];

int   *b[10];

 

  1)NSArray是一個對象,是恣意類型對象地址的集合

不能寄存復雜的數據類型(int, float, NSInteger…)

除非經過一些手腕把復雜數據類型變成對象。

  2)C數組可以保管恣意類型的數據

  3)NSArray下標越界不會有正告,但是運轉會直接報錯

 

 

2、如何創立一個空數組

  NSArray *array = [[NSArray alloc] init];

        array = [NSArray array];

 

    3. 經過指定對象創立數組

     //只要一個元素

        array = [NSArray arrayWithObject:@"aaa"];

        //有n個元素

        array = [NSArray arrayWithObjects:@"1111",@"2222",@"333", nil];

 

 

     4.經過指定數組創立數組(兩個數組內容的一樣)

[NSArray arrayWithArray:數組];

 

     5.經過復雜的方式創立數組

    array = @[];//空數組

        array = @[@"111",@"222",@"333"];//3個元素

 

         

     6.把數組中一切的元素轉化為字符串

    [array componentsJoinedByString:@“兩個元素之間添加的字符串”];

 

    7.獲取數組元素個數

   [array count]

 

 

    8.經過索引獲取相應的元素(下標要小於數組的count)

   [array objectAtIndex:下標];

 復雜取值:array[下標]

 

 

     9.經過對象獲取在數組中的索引(經過元素獲取下標)

 

    [array indexOfObject:要找的元素]

 

    10.取出數組的最後一個元素或許第一個元素

           //取第一個元素

        [array firstObject];

        //取最後一個

        [array lastObject];

 

    11.判別數組中數組包括某個元素

   [array containsObject:要查找的對象]

 

 

    12.如何取出數組中的一局部元素

//索引的集合,保管索引的,NSIndexSet是一個集合類(索引的集合),但是集合外面不能有反復索引

 

//只初始化一個索引

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndex:2];


//下標為1,長度為2

NSRange range = NSMakeRange(0, 3);

//結構一個范圍的索引

indexSet = [NSIndexSet indexSetWithIndexesInRange:range];

 
[array objectsAtIndexes:indexSet]

 

 

 

   13.判別NSArray中存儲的對象能否為指定類型的對象

                 /*

         [A isKindOfClass:B],判別A類能否是B的子類或許本類。

         [A isMemberOfClass:B],判別A類能否是B類(不包括子類)

         */

    

 

   14.判別兩個數組內容能否相反(與順序有關)

    NSArray *arr1 = @[@"111",@"222",@"333"];

        NSArray *arr2 = @[@"111",@"333",@"222"];

        

        if ([arr1 isEqualToArray:arr2])

        {

            NSLog(@"內容完全相等");

        }

        else

        {

            NSLog(@"內容不完全相等");

        }

 

 

    15.把數組寫入文件中(數組外面是:NSString,int,float,double......)

   [array writeToFile:path atomically:YES]

 

   16.從文件中讀取數組

  [NSArray arrayWithContentsOfFile:path]

 

 

   17.根本類型的包裝類

  NSNumber

//把int類型包裝成對象

 numberWithInt

 

 18.截取數組中指定范圍的元素

[array subarrayWithRange:要截取的范圍]

 

=============  NSArray數組的遍歷 ===========

   1.經過下標遍歷數組

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

{

       NSLog(@"%@",array[i]);

}

 

 

   2、NSEnumerator  枚舉器

        1)objectEnumerator音訊

    作用:正序輸入一切元素

       NSEnumerator *enumerator = [array objectEnumerator];

        2)reverSEObjectEnumerator音訊

    作用:逆序輸入一切元素

       enumerator = [array reverSEObjectEnumerator];

    

   //取下一個元素

    [enumerator nextObject]

 

   3.疾速枚舉法(for in)

      for (類型 *變量 in 數組)

 

  4.block辦法遍歷

 

=========     NSMutableArray可變數組    =============

    1.考慮:為什麼需求有NSMutableArray

 

2.NSMutableArray的作用

        

3.如何創立一個NSMutableArray

          1)創立空數組

        

           <1>NSMutableArray *array = [[NSMutableArray alloc] init];

<2>array = [NSMutableArray array];

 

 

            2)創立有對象的數組

               《1》初始化只能有一個對象

              NSMutableArray arrayWithObject:@"111"];

       《2》初始化只能有多個對象

[NSMutableArray arrayWithObjects:@"1111",@"222",@"333",@"4444", nil];

       [[NSMutableArray alloc] initWithObjects:<#(id), ...#>, nil];

               

  

    4.可變數組添加元素

        1)向可變數組外面添加元素(在最後添加)

       [array addObject:元素];

 

        2)如何向可變數組中拔出一個元素

   

         /*

         添加一個元素

         */

//在下標為0的地位添加333

       [array insertObject:@"333" atIndex:0];

          

 

         3)如何向可變數組中拔出多個元素

       

/*添加多個元素*/

//要添加的元素

NSArray *insertArray = @[@"444",@"555"];

//要添加的索引

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, [insertArray count])];

        
/*留意:要添加元素數組的個數等於索引集合的個數,否則crash*/

[array insertObjects:insertArray atIndexes:indexSet];

 

 

  5.依據數組下標取值

   [array objectAtIndex:下標];

 

  6、如何刪除元素

      1)刪除指定索引的元素

[array removeObjectAtIndex:下標];

 

    2) 刪除最後一個元素

[array removeLastObject];

 

    3)依據指定對象來刪除元素

[array removeObject:對象];

 

    4)刪除一切元素

[array removeAllObjects];

 

5)一次性刪除一切指定下標的元素

          [array removeObjectsAtIndexes:索引集合];

   

6) 刪除指定范圍內的元素

[array removeObjectsInRange:<#(NSRange)#>];

 

 

6.交換元素

//依據下標交換元素

[array replaceObjectAtIndex:0 withObject:@"xiaoming"];

//依據下標集合交換元素(多個元素交換)

[array replaceObjectsAtIndexes:<#(NSIndexSet *)#> withObjects:<#(NSArray *)#>];

//以後指定范圍的下標交換為指定數組中的元素

[array replaceObjectsInRange:<#(NSRange)#> withObjectsFromArray:<#(NSArray *)#>];

 

 

7.交流兩個元素

 /*下標與下標停止交流*/

 [array exchangeObjectAtIndex:交流的下標 withObjectAtIndex:交流的下標];

 

 

========   數組排序 ============

8、數組排序

     1)數組排序辦法

    sortedArrayXXX函數

作用:經過前往值將排序後果通知用戶,{不會修正數組中的元素}

適用於不能修正的數組

    sortUsingXXX函數

      作用:直接對數組內的元素停止排序,{最後後果保管在要排序的數組中}

適用於可被修正的數組

 

 

 

  2)運用block排序

    什麼是block:相似於c言語中的函數指針

    block的益處:可以訪問函數中的部分變量

    !!!定義一個block語法!!!

 

    block如何修正函數中的部分變量

__block關鍵字,是block語法特有的關鍵字  相當於將變質變成全局變量

 

 其它闡明:

    函數指針是指向函數的指針變量,即實質是一個指針變量。

   int (*f) (int x); /* 聲明一個函數指針 */

   f=func; /* 將func函數的首地址賦給指針f */

 

 指向函數的指針包括了函數的地址,可以經過它來調用函數。聲明格式如下:

 類型闡明符 (*函數名)(參數)

 

3) NSSortDescriptor初級排序

 

 

====== 其他 ==============

 

   selector選擇器運用

  1.SEL數據類型

  1)什麼是

    Objective-C在SEL編譯的時分,會依據辦法的名字(包括參數序列),

    生成一個用 來區分這個辦法的獨一的一個ID,這個ID就是SEL類型的

 

還可以這樣了解:

                     SEL就是對辦法的一種包裝。包裝的SEL類型數據它對應相應的辦法地址,找到辦法地址就可以調用辦法。在內存中每個類的辦法都存儲在類對象中,每個辦法都有一個與之對應的SEL類型的數據,依據一個SEL數據就可以找到對應的辦法地址,進而調用辦法。

 

辦法的存儲地位:

  • 在內存中每個類的辦法都存儲在類對象中
  • 每個辦法都有一個與之對應的SEL類型的數據
  • 依據一個SEL數據就可以找到對應的辦法地址,進而調用辦法

 

  2)作用:

從效率的角度下去說,執行的時分不是經過辦法名字而是辦法ID也就是一個整數來查找辦法,

       由於整數的查找和婚配比字符串要快得多,所以這樣可以在某種水平上進步執行的效率

  並且加強順序的靈敏性

 

  3)運用辦法

經過@selector辦法獲取

SEL s1 = @selector(compare:);

經過NSSelectorFromString將一個字符串轉換為一個SEL類型

SEL s2 = NSSelectorFromString(@"compare:");

 

 

2.performSelector

  1)作用:執行SEL

 

  2)運用@selector排序

    SEL 是oc特有的類型  compare:   @selector(compare:)

         一個辦法名對應一個編號

         只需辦法名相反,那麼它的SEL值就相反

         IOS會將辦法名(函數名)轉化為一個獨一編號  編號就是SEL類型

         零碎經過辨認SEL 去尋覓對應的辦法名

 

         @selector :辦法選擇器

         @selector(xxx) xxx就是辦法名        

 

【iOS開發-OC言語 (四)數組】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved