1
완료 블록이있는 2 개의 비동기 대기열을 만들고이 블록을 마친 후 일부 작업을 실행하고 싶습니다. 나는이 코드로 그것을 달성 할 수 없다. 내 나쁜 곳?완성 된 블록 대기열 만들기
dispatch_queue_t queue = dispatch_queue_create("com.company.queue", 0);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// block 1
dispatch_group_async(group, queue, ^{
[[WebRequests sharedInstance] request:@{@"type" : [NSNumber numberWithInt:request_uploadAdv], @"adv" : adv} withCompletion:^(id response) {
BOOL success = [response boolValue];
NSLog(@"done1 text");
// block 1 Done
}];
});
// block 2 //картинки
dispatch_group_async(group, queue, ^{
[self getImagesForAdv:adv completion:^(NSArray *images) {
[[WebRequests sharedInstance] uploadPhotos:images completion:^(BOOL success) {
uploadImagesSuccess = YES;
NSLog(@"done1 2\n");
// block 2 Done
}];
}];
});
dispatch_group_notify(group, queue, ^{
printf("all tasks are finished!\n");
});
이것은 탁월합니다. 그냥 궁금해서 :'dispatch_group_notify'의 메인 큐로 돌아가고 싶다면, 메인 큐를 목표로하는 또 다른 타겟 큐를 셋업해서'dispatch_group_notify'의 두 번째 매개 변수 (즉,'dispatch_group_notify (group, mainQueue)' ?'mainQueue'라는 또 다른 큐를 생성 한 다음 다른 'dispatch_set_target_queue'를 사용하는 것이 중복된다는 것을 알고 있습니다.하지만 이론적으로 올바른지 알고 싶습니다. 고마워요. – Unheilig
그래, 그게 효과가있다. – ipmcc