Блоки в iOS являются частью Параллельного программирования
Блок используется, когда вы хотите создать единицы работы (то есть сегменты кода), которые можно передавать, как если бы они были значениями . Блоки обычно используются для записи обратных вызовов .
Обычно использование блоков не отражается в различном поведении приложения. Синтаксическое отличие состоит в том, что при использовании блоков вам не нужно определять делегат запроса или реализовывать методы делегата (такие как -requestFinished:
и -requestFailed:
) для асинхронных запросов.
Одним из преимуществ является доступ к локальным переменным метода в блоке завершения, потому что выражение функции в блоке может ссылаться и может сохранять доступ к локальным переменным (подобно переменной url
в вашем методе -grabURLInBackground:
или любая другая локальная переменная, определенная в вашем методе).
Вторым преимуществом является использование вложенных вызовов запросов. Например, вам может потребоваться выполнить несколько запросов последовательно, и без блоков вам потребуется определять отдельный обратный вызов метода делегата для каждого запроса, что может привести к снижению читабельности вашего кода.
Блоки позволяют вам писать код в точке вызова, который выполняется позже в контексте реализации метода , что может быть очень полезно, когда вы привыкнете использовать их.
Некоторые шаблоны, которых следует избегать при использовании блоков, упомянуты в Топы программирования блоков Apple