ios 遍历数组的八种方法

//第一种

[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);

}

个人比较喜欢第一种方法

注意:

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容