目前所知有七種方法
//第一種
[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]);
}
個人比較喜歡第一種方法
① 其中第二種方法由於是並行,所以打印出來的東西是隨機的,並不是按照順序打印的
② 第三種容易引起主線程堵塞,所以最好自己另外創建一個線程
③ 本人學識淺,目前所知的就這幾種,歡迎補充
③