How I call properly dispatch_async calls inside dispatch_async
dispatch_group_t downloadQueue = dispatch_group_create();
dispatch_group_async(downloadQueue,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
NSLog(@"Main");
[NSThread sleepForTimeInterval:5.0];
NSLog(@"End");
[self myMethod];
});
dispatch_group_notify(downloadQueue,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0), ^ {
NSLog(@"FINAL");
});
and here is myMethod :
-(void)myMethod
{
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block1
NSLog(@"Block1");
[NSThread sleepForTimeInterval:5.0];
NSLog(@"Block1 End");
});
dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block2
NSLog(@"Block2");
[NSThread sleepForTimeInterval:8.0];
NSLog(@"Block2 End");
});
dispatch_group_notify(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^ {
// block3
NSLog(@"Block3");
});
}
and my output is :
Main
End
Block1
Block2
FINAL
Block1 End
Block2 End
Block3
but i need
Main
End
Block1
Block2
Block1 End
Block2 End
Block3
FINAL
myMethodis asynchronous so it will dispatch its blocks and then return, exiting the outer dispatch group. Use dispatch_group_enter and dispatch_group_leave rather than dispatch_group_async