dispatch_get_main_queue 的同步异步问题

 dispatch_sync(dispatch_get_main_queue(), ^(){

        NSLog(@"222");

    });

在ios中是无法使用 dispatch_sync(dispatch_get_main_queue()

原因如下:

在ios使用 dispatch_sync(dispatch_get_main_queue()^(){block体});

dispath向主队列加一个同步的block;

 

此时主队列在等待    dispatch_sync(dispatch_get_main_queue()^(){block体});执行

dispatch_sync在等待主队列执行完毕。

造成死锁。

 

所以在ios使用主队列 dispatch_get_main_queue() 时 应该使用异步执行

dispatch_async(dispatch_get_main_queue(), ^(){

        NSLog(@"222");

    });

原文链接:http://www.software8.co/caozuoxt/ios/3512.html

原文地址:https://www.cnblogs.com/wwwroot/p/2977516.html