objective-c 语言 数组遍历的4种方式:1、普通for循环;2、快速for循环;3、特性block方法;4、枚举方法。
Blog类:
01 |
#import
"Blog.h" |
02 |
@implementation
Blog |
03 |
04 |
+(Blog
*)blog{ |
05 |
Blog
* blog = [[Blog alloc] init]; |
06 |
return blog; |
07 |
} |
08 |
09 |
-(Blog
*)setBlogTitle:(NSString *)title andContent:(NSString *)content{ |
10 |
_title
= title; |
11 |
_content
= content; |
12 |
return self; |
13 |
} |
14 |
15 |
-(NSString
*)description{ |
16 |
return [NSString
stringWithFormat:@ "blog
: title is \"%@\" , and content is \"%@\"" ,
_title,_content ]; |
17 |
} |
18 |
19 |
-( void )dealloc{ |
20 |
NSLog(@ "%@被销毁了" ,self.title); |
21 |
} |
22 |
@end |
主函数:
01 |
#pragma
mark Array数组的四种遍历方法 |
02 |
void testArray(){ |
03 |
Blog
*blog1 = [[Blog blog] setBlogTitle:@ "Love" andContent:@ "I
love you" ]; |
04 |
Blog
*blog2 = [[Blog blog] setBlogTitle:@ "Friendship" andContent:@ "you
are my best friend" ]; |
05 |
NSArray
*array = [NSArray arrayWithObjects:@ "hello" ,@ "world" ,blog1,blog2,
nil]; |
06 |
|
07 |
//第一种遍历:普通for循环 |
08 |
long int count
= [array count]; |
09 |
for ( int i
= 0 ; i < count; i++) { |
10 |
NSLog(@ "1遍历array:
%zi-->%@" ,i,[array
objectAtIndex:i]); |
11 |
} |
12 |
|
13 |
//第二种遍历:快速for循环,需要有外变量i |
14 |
int i
= 0; |
15 |
for (id
obj in array) { |
16 |
NSLog(@ "2遍历array:%zi-->%@" ,i,[array
objectAtIndex:i]); |
17 |
i++; |
18 |
} |
19 |
|
20 |
//第三种遍历:OC自带方法enumerateObjectsUsingBlock: |
21 |
|
22 |
//默认为正序遍历 |
23 |
[array
enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
{ |
24 |
NSLog(@ "3遍历array:%zi-->%@" ,idx,obj); |
25 |
}]; |
26 |
//NSEnumerationReverse参数为倒序遍历 |
27 |
[array
enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop)
{ |
28 |
NSLog(@ "4倒序遍历array:%zi-->%@" ,idx,obj); |
29 |
}]; |
30 |
|
31 |
//第四种遍历:利用枚举 |
32 |
NSEnumerator
*en = [array objectEnumerator]; |
33 |
id
obj; |
34 |
int j
= 0 ; |
35 |
while (obj
= [en nextObject]) { |
36 |
NSLog(@ "5遍历array:%d-->%@" ,j,obj); |
37 |
j++; |
38 |
} |
39 |
} |
40 |
int main( int argc, const char *
argv[]) |
41 |
{ |
42 |
@autoreleasepool
{ |
43 |
testArray(); |
44 |
} |
45 |
return 0; |
46 |
} |