objective-c数组的四种遍历方法总结

 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 }

结果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章