Я успешно использовал grand central dispatch в своих приложениях, но мне было интересно, в чем реальное преимущество использования чего-то вроде этого:
dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff
или даже
dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff
Я имею в виду, что в обоих случаях вы запускаете блок, который будет выполняться в основном потоке, именно там, где запускается приложение, и это не поможет снизить нагрузку. В первом случае у вас нет никакого контроля, когда блок будет работать. Я видел случаи, когда блоки выполнялись через полсекунды после их запуска. Во втором случае он похож на
[self doStuff];
Правильно?
Интересно, что вы думаете, ребята.