美文网首页iOSiOS 开发iOS 高级开发
ios 遍历数组的八种方法

ios 遍历数组的八种方法

作者: 远0 | 来源:发表于2016-11-03 13:53 被阅读589次

//第一种

[arr enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop){

NSLog(@"%ld,%@",idx,[arr objectAtIndex:idx]);

}];

//第二种

dispatch_apply([arr count], dispatch_get_global_queue(0, 0), ^(size_t index){//并行

NSLog(@"%ld,%@",index,[arr objectAtIndex:index]);

});

//第三种

dispatch_apply([arr count], dispatch_get_main_queue(), ^(size_t index){//串行,容易引起主线程堵塞,可以另外开辟线程

NSLog(@"%ld,%@",index,[arr objectAtIndex:index]);

});

//第四种

for (NSString*str in arr) {

NSLog(@"%@",str);

}

//第五种,do-while

int i = 0;

do {

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

i++;

} while (i<[arr count]);

//第六种,while-do

int j = 0;

while (j<[arr count]) {

NSLog(@"%@",[arr objectAtIndex:j]);

j++;

}

//第七种,普通for循环

for (int m = 0; m<[arr count]; m++) {

NSLog(@"%@",[arr objectAtIndex:m]);

}

//第八种,NSEnumerator  (谢谢大刘124585858的补充)

提供正反向遍历

- (nullable ObjectType)nextObject;

@property (readonly,copy) NSArray *allObjects;

NSArray *iosArray = @[ @"I", @"O", @"S"];

NSEnumerator *enumerator = [iosArray objectEnumerator];//正向遍历

NSEnumerator *enumerator = [iosArray reverseObjectEnumerator];//反向遍历

id object;

while ((object = [enumerator nextObject]) != nil) {

//处理枚举器中的数据

NSLog(@"%@", object);

}

个人比较喜欢第一种方法

注意:

① 其中第二种方法由于是并行,所以打印出来的东西是随机的,并不是按照顺序打印的

② 第三种容易引起主线程堵塞,所以最好自己另外创建一个线程

③ 本人学识浅,目前所知的就这几种,欢迎补充

相关文章

网友评论

  • AirSars:最好能比较下各种循环所需要的时间对比,我只知道forin循环比for循环快,第一种在数量比较大的时候效率很高
  • 2b641c901374:楼主没听过 NSEnumator么
    远0:@大刘124585858 是的。是还有这个方式,个人比较少用这种方式。谢谢你的补充,我等下更新一下。

本文标题:ios 遍历数组的八种方法

本文链接:https://www.haomeiwen.com/subject/eunbuttx.html