ios 數組遍曆

來源:互聯網
上載者:User
http://www.cnblogs.com/love-lie/archive/2012/07/11/2585804.html
     使用數組對象建立的數組功能非常強大,在Java語言或者C語言中定義的數組必須滿足數組中的每一個元素必須是同樣的類型。而Objective-C語言可以在Array數組中放任意類型的資料,值得注意的是只能放指向這個對象的指標,如果直接放int ,char,double 等等,是不行的.

  1.不可變數組對象  使用NSArray關鍵字建立一個不可變的數組,一旦初始化完畢後這個數組的元素是不可以在動態添加與刪除。 建立MyClass對象,將指向這個對象的指標也可以存入NSArray數組中,可見NSArray對象數組中可以儲存任意對象的資料。   [arraycount] : 得到這個對象數組的長度。 [arrayobjectAtIndex 0]: 傳入數組腳標的id 得到資料對象。 [arrayWithObjects; ...]:向數組對象初始化賦值。這裡可以寫任意對象的指標,結尾必須使用nil。標誌結束~
  使用for迴圈遍曆這個數組對象。
  1. #import<UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. intmain(intargc,
    char*argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  6. //添加我們的測試代碼
  7. //建立自訂類
  8. MyClass *myClass = [[MyClassalloc]init];
  9. //建立一個不可變的數組
  10. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇哢哢",myClass,nil];
  11. //得到數組的長度
  12. int count = [arraycount];
  13. //遍曆這個數組
  14. for(int i = 0; i< count; i++) {
  15. NSLog(@"普通的遍曆:i = %d時的數組對象為: %@",i,[array objectAtIndex:i]);
  16. }
  17. intretVal = UIApplicationMain(argc, argv, nil,nil);
  18. [pool release];
  19. returnretVal;
  20. }
 

上面的for迴圈遍曆方法比較普遍,但是效率不好,而且安全性不高。Objective-C提供了一種快速枚舉遍曆方法,推薦大家都使用這種方法來遍曆。 for(NSObject *object in array) :遍曆array這個數組,每一次迴圈將數組中的元素賦值給 *object,實現迴圈遍曆。#import<UIKit/UIKit.h>

  1. #import "MyClass.h"
  2. intmain(intargc,
    char*argv[])
  3. {
  4. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  5. //添加我們的測試代碼
  6. //建立自訂類
  7. MyClass *myClass = [[MyClassalloc]init];
  8. //建立一個不可變的數組
  9. NSArray *array= [NSArray arrayWithObjects:@"雨松", @"MOMO",@"哇哢哢",myClass,nil];
  10. //遍曆這個數組
  11. for(NSObject *object in array) {
  12. NSLog(@"快速的遍曆數組對象為:%@",object);
  13. }
  14. int retVal =UIApplicationMain(argc, argv, nil, nil);
  15. [pool release];
  16. returnretVal;
  17. }

   2.可變數組對象  [NSMutableArray arrayWithCapacity:10]:初始化可變數組對象的長度,如果後面代碼繼續添加數組超過長度10以後 NSMutableArray的長度會自動擴充,所以不用擔心數組越界。 [array addObject:...] :向可變數組尾部添加資料對象。 [array addObjectsFromArray:..]:向可變數組尾部添加一個數組對象。*)#>];
  1. #import<UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. intmain(intargc,
    char*argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  6. //添加我們的測試代碼
  7. //建立自訂類
  8. MyClass *myClass = [[MyClassalloc]init];
  9. //建立一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
  11. //向數組中動態添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇哢哢"];
  16. [array addObject:myClass];
  17. for(NSObject * object in array)
  18. {
  19. NSLog(@"輸出對象數組:%@", object);
  20. }
  21. intretVal = UIApplicationMain(argc, argv, nil,nil);
  22. [pool release];
  23. returnretVal;
  24. }
 
  [array insertObject:@"插入一隻小老虎" atIndex:1]:向可變數組中插入一個字串對象,並且設定它的位置腳標索引為 1。

[array insertObject:(NSArray *)atIndex:(NSIndexSet *)] :向可變數組中插入一個數組對象,可以任意設定它的位置腳標索引。

  1. #import<UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. intmain(intargc,
    char*argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  6. //添加我們的測試代碼
  7. //建立自訂類
  8. MyClass *myClass = [[MyClassalloc]init];
  9. //建立一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
  11. //向數組中動態添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇哢哢"];
  16. [array addObject:myClass];
  17. //向數組中插入
  18. [array insertObject:@"插入一隻小老虎" atIndex:1];
  19. for (NSObject * objectin array)
  20. {
  21. NSLog(@"輸出對象數組:%@",object);
  22. }
  23. int retVal =UIApplicationMain(argc, argv, nil, nil);
  24. [pool release];
  25. returnretVal;
  26. }
 
  NSRange range = NSMakeRange(0,5); 設定一個範圍為 0 到 5之間。 [array removeObject:myClass inRange:range] :設定在一個範圍內刪除資料,如果這個範圍內沒有刪除的這個對象則不會刪除任何東西。例子中因為myClass對象在 數組 0 到5的範圍內,所以myClass就被刪除掉了。   [array removeObject:(id)]:無需考慮範圍,主要數組中存在這個對象就會直接被刪除。 [arrayremoveObjectAtIndex:(NSUInteger)]:刪除數組中指定腳標索引的資料。   [array removeObjectIdenticalTo:(id)] :刪除數組中指定元素 [array removeObjectIdenticalTo:(id)inRange:(NSRange)] : 在指定範圍內刪除指定的元素。   [array removeObjectsInArray:(NSArray *)]:刪除一個數組的元素。
  1. #import<UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. intmain(intargc,
    char*argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  6. //添加我們的測試代碼
  7. //建立自訂類
  8. MyClass *myClass = [[MyClassalloc]init];
  9. //建立一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
  11. //向數組中動態添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇哢哢"];
  16. [array addObject:myClass];
  17. //設定一個刪除範圍
  18. NSRange range=NSMakeRange(0,5);
  19. //刪除元素
  20. [array removeObject:myClassinRange:range];
  21. for(NSObject * object in array)
  22. {
  23. NSLog(@"輸出對象數組:%@", object);
  24. }
  25. intretVal = UIApplicationMain(argc, argv, nil,nil);
  26. [pool release];
  27. returnretVal;
  28. }
 
  [array replaceObjectAtIndex 2withObject:@"已經修改了"]:替換數組腳標為2的資料。
  1. #import<UIKit/UIKit.h>
  2. #import "MyClass.h"
  3. intmain(intargc,
    char*argv[])
  4. {
  5. NSAutoreleasePool *pool = [[NSAutoreleasePoolalloc] init];
  6. //添加我們的測試代碼
  7. //建立自訂類
  8. MyClass *myClass = [[MyClassalloc]init];
  9. //建立一個可變的數組長度為10
  10. NSMutableArray *array = [NSMutableArrayarrayWithCapacity:10];
  11. //向數組中動態添加對象
  12. [array addObject:@"雨松"];
  13. [array addObject:@"MOMO"];
  14. [array addObject:@"小可愛"];
  15. [array addObject:@"哇哢哢"];
  16. [array addObject:myClass];
  17. //修改腳標索引為2的元素
  18. [array replaceObjectAtIndex: 2 withObject:@"已經修改了"];
  19. for(NSObject * object in array)
  20. {
  21. NSLog(@"輸出對象數組:%@", object);
  22. }
  23. intretVal = UIApplicationMain(argc, argv, nil,nil);
  24. [pool release];
  25. returnretVal;
  26. }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.