//第一種
[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){//串行,容易引起主線程堵塞撕攒,可以另外開(kāi)辟線程
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循環(huán)
for (int m = 0; m<[arr count]; m++) {
NSLog(@"%@",[arr objectAtIndex:m]);
}
//第八種瘸羡,NSEnumerator? (謝謝大劉124585858的補(bǔ)充)
提供正反向遍歷
- (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) {
//處理枚舉器中的數(shù)據(jù)
NSLog(@"%@", object);
}
個(gè)人比較喜歡第一種方法
注意:
① 其中第二種方法由于是并行咖祭,所以打印出來(lái)的東西是隨機(jī)的,并不是按照順序打印的
② 第三種容易引起主線程堵塞戚扳,所以最好自己另外創(chuàng)建一個(gè)線程
③ 本人學(xué)識(shí)淺,目前所知的就這幾種族吻,歡迎補(bǔ)充