【iOS入門】數組字典的遍歷EnumerateObjectsUsingBlock 記錄


結論1:當只是遍歷NSArray的時候使用For-in會比較快速, 推薦使用For-in遍歷數組.

結論2:當我們想遍歷NSDictionary的時候, 推薦使用enumerateKeysAndObjectsUsingBlock

不僅僅是因為速度快, 更是因為代碼更優雅和直觀.

使用block同時遍歷字典key,value

block版本的字典遍歷可以同時取key和value(forin只能取key再手動取value),如:

NSDictionary *dict = @{@"a"@"1"@"b"@"2"};

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

NSLog(@"key: %@, value: %@", key, obj);

}];

對於耗時且順序無關的遍歷,使用並發版本

[dict enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id key,id obj,BOOL *stop) {

NSLog(@"key:%@-----value:%@----",key,obj);

}];

對於數組

NSArray*array =@[@"1",@"2",@"3",@"4",@"5"];

[array

enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL * stop) {

NSLog(@"1:%@----%d",obj,(int)idx);

}];

//並發遍歷(與CPU的核數有關)

[array enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj,NSUInteger idx,BOOL * stop) {

NSLog(@"2:%@----%d",obj,(int)idx);

}];

//倒序遍歷

for(NSString *string in [array reverseObjectEnumerator]) {

NSLog(@"12:%@----",string);

}

//倒序遍歷

[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj,NSUInteger idx,BOOL* stop) {

NSLog(@"13:%@----%d",obj,(int)idx);

}];

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM