Grand Central Dispatch (GCD) против performSelector - нужно лучшее объяснение

Я использовал 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? Я прочитал много документации по ним, но пока не получил окончательного ответа.

47
задан Brad Larson 7 March 2011 в 23:08
поделиться