Мне действительно нравятся блоки, но в этом случае мне хотелось бы использовать протокол делегирования. Сетевые подключения могут обрываться множеством способов, и их делегаты обычно хранят достаточное количество информации о них. Я считаю, что это хорошо отображается на протокол делегата с несколькими дополнительными методами.
Если вы предоставляете очень упрощенный API для доступа к сетевым данным, пары блоков «успех / отказ» может быть достаточно. Лично я считаю, что мне приходится иметь дело с множеством различных случаев, в которых используется много методов делегата для объекта делегата с состоянием. Например; если я попытаюсь повторить неудачные соединения немедленно или позже, изменится ли относительный приоритет неудачных соединений, могу ли я сделать частичный ответ, если я переключу соединение на wifi, когда оно станет доступным, могу ли я предложить пользователю возможность аутентификации, если будет предложено я показываю прогрессивный прогресс в соединении? Вы можете обработать все это с помощью блоков, но я обнаружил, что предпочел бы иметь класс делегата, управляющий соединением.
Не зная больше о том, какие данные вы собираетесь использовать для своего интерфейса, я не знаю, могу ли я быть более конкретным, но. Я был бы соблазн разрешить пользователям API управлять своим собственным состоянием соединения, если это возможно.