1. 程式人生 > >For循環執行AFNetworking請求

For循環執行AFNetworking請求

nsinteger original gem sig mat -s use nsa eat

技術分享圖片

屏幕快照 2017-12-19 下午1.46.25.png

需求:如下操作打印的文檔為

NSLog(@"開始");for(NSIntegeri =0; i <5; i++) { [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第一層的循環請求,i=%ld",i);for(NSIntegerj =0; j <3; j++) { [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第二層的循環請求,i=%ld,j=%ld",i,j); }]; } }]; }NSLog(@"結束");

開始

第一層的循環請求,i=0

第二層的循環請求,i=0,j=0

第二層的循環請求,i=0,j=1

第二層的循環請求,i=0,j=2

第一層的循環請求,i=1

第二層的循環請求,i=1,j=0

第二層的循環請求,i=1,j=1

第二層的循環請求,i=1,j=2

第一層的循環請求,i=2

第二層的循環請求,i=2,j=0

第二層的循環請求,i=2,j=1

第二層的循環請求,i=2,j=2

第一層的循環請求,i=3

第二層的循環請求,i=3,j=0

第二層的循環請求,i=3,j=1

第二層的循環請求,i=3,j=2

第一層的循環請求,i=4

第二層的循環請求,i=4,j=0

第二層的循環請求,i=4,j=1

第二層的循環請求,i=4,j=2

結束

一種寫法:

dispatch_async(dispatch_get_global_queue(0,0), ^{NSLog(@"開始"); dispatch_semaphore_t sema = dispatch_semaphore_create(0);for(NSIntegeri =0; i <5; i++) { [RequestUtil requestFavoriteGroup:@"8130d4174c2353af"andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第一層的循環請求,i=%ld",i);dispatch_async(dispatch_get_global_queue(0,0), ^{ dispatch_semaphore_t sema2 = dispatch_semaphore_create(0);for(NSIntegerj =0; j <3; j++) { [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第二層的循環請求,i=%ld,j=%ld",i,j); dispatch_semaphore_signal(sema2); }]; dispatch_semaphore_wait(sema2, DISPATCH_TIME_FOREVER); } dispatch_semaphore_signal(sema); }); }]; dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER); }NSLog(@"結束"); });

For循環執行AFNetworking請求