#import #include void one() { printf("one...\n"); // breakpoint 1 } void two() { printf("two...\n"); one(); } void three() { printf("three...\n"); two(); } int main(int argc, char *argv[]) { printf("main...\n"); // Nest from main queue > global queue > main queue. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ three(); }); }); dispatch_main(); }