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