Метод -sendSynchronousRequest: returningResponse: error: блокирует основной поток (конечно, всякий раз, когда он запускается в основном потоке, поскольку этот метод можно запустить из любого другого потока, но я считаю,это не рекомендуется).
Методы, использующие делегаты, являются асинхронными, методы запускаются, и результаты (в некоторый момент в будущем) будут возвращены в методах делегатов.Это дает пользователю более гладкую работу, так как основной поток не будет заблокирован.
Редактировать: лично Я почти никогда не использую метод -sendSynchronousRequest: returningResponse: error: по вышеупомянутым причинам.Большую часть времени я использую этот метод, когда мне нужно быстро что-то построить, например, для проверки концепции.Я думаю, что можно использовать метод для небольших загрузок, но если произойдет тайм-аут (потому что по какой-то причине сервер не работает), весь пользовательский интерфейс будет заблокирован на (я полагаю) 2 минуты, что будет очень раздражать для конечного пользователя.