屏幕快照 2017-12-19 下午1.46.25.png
需求:如下操作打印的文檔為
NSLog(@"開(kāi)始");for(NSIntegeri =0; i <5; i++) {? ? ? ? [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第一層的循環(huán)請(qǐng)求,i=%ld",i);for(NSIntegerj =0; j <3; j++) {? ? ? ? ? ? ? ? [RequestUtil requestFavoriteGroup:appDelegate.userInfo.uid andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第二層的循環(huán)請(qǐng)求,i=%ld,j=%ld",i,j);? ? ? ? ? ? ? ? }];? ? ? ? ? ? }? ? ? ? }];? ? }NSLog(@"結(jié)束");
開(kāi)始
第一層的循環(huán)請(qǐng)求,i=0
第二層的循環(huán)請(qǐng)求,i=0,j=0
第二層的循環(huán)請(qǐng)求,i=0,j=1
第二層的循環(huán)請(qǐng)求,i=0,j=2
第一層的循環(huán)請(qǐng)求,i=1
第二層的循環(huán)請(qǐng)求,i=1,j=0
第二層的循環(huán)請(qǐng)求,i=1,j=1
第二層的循環(huán)請(qǐng)求,i=1,j=2
第一層的循環(huán)請(qǐng)求,i=2
第二層的循環(huán)請(qǐng)求,i=2,j=0
第二層的循環(huán)請(qǐng)求,i=2,j=1
第二層的循環(huán)請(qǐng)求,i=2,j=2
第一層的循環(huán)請(qǐng)求,i=3
第二層的循環(huán)請(qǐng)求,i=3,j=0
第二層的循環(huán)請(qǐng)求,i=3,j=1
第二層的循環(huán)請(qǐng)求,i=3,j=2
第一層的循環(huán)請(qǐng)求,i=4
第二層的循環(huán)請(qǐng)求,i=4,j=0
第二層的循環(huán)請(qǐng)求,i=4,j=1
第二層的循環(huán)請(qǐng)求,i=4,j=2
結(jié)束
一種寫(xiě)法:
dispatch_async(dispatch_get_global_queue(0,0), ^{NSLog(@"開(kāi)始");? ? ? ? dispatch_semaphore_t sema = dispatch_semaphore_create(0);for(NSIntegeri =0; i <5; i++) {? ? ? ? ? ? [RequestUtil requestFavoriteGroup:@"8130d4174c2353af"andBlock:^(NSArray*modelArr,NSError*error) {NSLog(@"第一層的循環(huán)請(qǐng)求,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(@"第二層的循環(huán)請(qǐng)求,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(@"結(jié)束");? ? });