天天看點

OC中數組的四種周遊方式

針對OC中數組周遊的幾種方式我們來通過下面一個簡單的程式來進行說明:

#import<Foundation/Foundation.h>

int main(int argc,const char * argv[])

{

    @autoreleasepool

    {

        NSString *t1 = @"Hello";

        NSString *t2 = @"welcome";

        NSString *t3 = @"everyone";

        //建立一個可變數組将這三個對象添加到數組中去;

        NSMutableArray * arr1 = [NSMutableArrayarrayWithCapacity:10];

        [arr1 addObject:t1];

        [arr1 addObject:t2];

        [arr1 addObject:t3];

        //第一種方式:就像C語言中的for循環一樣直接循環周遊;

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

        {

            NSLog(@"%@", [arr1 objectAtIndex:i]);

        }

        //第二種方式:這種方式相對簡單,其中object是一個id類型的對象;

        for(id object in arr1)

        {

            NSLog(@"%@", object);

        }

        //第三種方式:通過實作一個疊代器,相當于利用枚舉進行周遊;

        id elem;

        NSEnumerator *en = [arr1 objectEnumerator];

        while(elem = [en nextObject])

        {

            NSLog(@"%@", elem);

        }

        //第四種方式:通過BLOCK塊進行周遊,是OC中自帶的一種方法;

        [arr1 enumerateObjectsUsingBlock:^(id obj, NSUInteger index, BOOL *stop)

         {

             NSLog(@"%d is %@", index, obj);

             *stop = NO;    //控制循環;

         }]; 

    }

    return 0;

}

程式運作結果如下:

2015-08-19 16:39:20.889 TestArray[2283:303] Hello

2015-08-19 16:39:20.899 TestArray[2283:303] welcome

2015-08-19 16:39:20.900 TestArray[2283:303] everyone

2015-08-19 16:39:20.901 TestArray[2283:303] Hello

2015-08-19 16:39:20.902 TestArray[2283:303] welcome

2015-08-19 16:39:20.903 TestArray[2283:303] everyone

2015-08-19 16:39:20.949 TestArray[2283:303] Hello

2015-08-19 16:39:20.951 TestArray[2283:303] welcome

2015-08-19 16:39:20.952 TestArray[2283:303] everyone

2015-08-19 16:39:20.954 TestArray[2283:303] 0 is Hello

2015-08-19 16:39:20.956 TestArray[2283:303] 1 is welcome

2015-08-19 16:39:20.957 TestArray[2283:303] 2 is everyone