遍历数组

#pragma mark Array数组的四种遍历方法
void testArray(){
     Blog *blog1 = [[Blog blog] setBlogTitle:@ "Love" andContent:@ "I love you" ];
     Blog *blog2 = [[Blog blog] setBlogTitle:@ "Friendship" andContent:@ "you are my best friend" ];
     NSArray *array = [NSArray arrayWithObjects:@ "hello" ,@ "world" ,blog1,blog2, nil];
     
     //第一种遍历:普通for循环
     long int count = [array count];
     for ( int i = 0 ; i < count; i++) {
         NSLog(@ "1遍历array: %zi-->%@" ,i,[array objectAtIndex:i]);
     }
     
     //第二种遍历:快速for循环,需要有外变量i
     int i = 0;
     for (id obj in array) {
         NSLog(@ "2遍历array:%zi-->%@" ,i,[array objectAtIndex:i]);
         i++;
     }
     
     //第三种遍历:OC自带方法enumerateObjectsUsingBlock:
     
     //默认为正序遍历
     [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
         NSLog(@ "3遍历array:%zi-->%@" ,idx,obj);
     }];
     //NSEnumerationReverse参数为倒序遍历
     [array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
         NSLog(@ "4倒序遍历array:%zi-->%@" ,idx,obj);
     }];
     
     //第四种遍历:利用枚举
     NSEnumerator *en = [array objectEnumerator];
     id obj;
     int j = 0 ;
     while (obj = [en nextObject]) {
         NSLog(@ "5遍历array:%d-->%@" ,j,obj);
         j++;
     }
}
int main( int argc, const char * argv[])
{
     @autoreleasepool {
         testArray();
     }
     return 0;
}

你可能感兴趣的:(遍历数组)