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循環(huán)

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

}

個人比較喜歡第一種方法

注意:

① 其中第二種方法由于是并行,所以打印出來的東西是隨機的,并不是按照順序打印的

② 第三種容易引起主線程堵塞,所以最好自己另外創(chuàng)建一個線程

③ 本人學識淺,目前所知的就這幾種,歡迎補充

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容