Я использовал GCD и performSelectorOnMainThread: waitUntilDone в мои приложения и склонны думать о них как о взаимозаменяемых, то есть performSelectorOnMainThread: waitUntilDone - это оболочка Obj-C для синтаксиса GCD C. Я думал об этих двух командах как об эквивалентных:
dispatch_sync(dispatch_get_main_queue(), ^{ [self doit:YES]; });
[self performSelectorOnMainThread:@selector(doit:) withObject:YES waitUntilDone:YES];
Я ошибаюсь? То есть, есть ли разница между командами performSelector * и GCD? Я прочитал много документации по ним, но пока не получил окончательного ответа.