Как видно из названия, dispatch_sync() на главной очереди и основной поток вызывает тупиковая, так:Почему dispatch_sync в основном потоке вызывает тупик, но NSBlockOperation нет?
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"%@", [NSThread currentThread]);
});
Но NSBlockOperation не приведет к тупиковой:
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
NSLog(@"%@", [NSThread currentThread]);
}];
[operation start];
Итак, я не понимаю почему? Эта функция не возвращается до тех пор, пока блок не завершится так же, как dispatch_sync, так почему он не вызывает тупик? И в чем разница между ними?