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

}

个人比较喜欢第一种方法

注意:

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

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

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

你可能感兴趣的:(ios 遍历数组的八种方法)