Использует ли блоки также функцию обратного вызова, как это делает обработчик выполнения?(Swift / IOS) - PullRequest
0 голосов
/ 25 августа 2018

Есть вопросы с похожим на этот, я узнал, что обработчик завершения, использующий функцию обратного вызова, блоки - это просто анонимные функции или замыкания

Пример block и обработчик завершения

class func scheduledTimer(withTimeInterval interval: TimeInterval, 
                  repeats: Bool, 
                    block: @escaping (Timer) -> Void) -> Timer


func startUpdates(from start: Date, 
      withHandler handler: @escaping CMPedometerHandler)

Question1

Я заметил, что другое отличие заключается в том, что обработчик завершения имеет typealiasдля типа, это относится ко всем IOS Framework дизайн?

typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void

Question2

Используют ли блоки также функцию обратного вызова?Блоки также имеют экранирующие ключевые слова, что означает, что замыкание будет вызываться после того, как была возвращена внешняя функция, для меня это звучит как «обратный вызов».

Question3

Если ответ на вопрос 2 - да, то в чем причина изобретать колеса, почему бы просто не назвать их всеми блоками или обработчиками завершения

1 Ответ

0 голосов
/ 25 августа 2018

Вы говорите о терминах, которые на самом деле означают одно и то же.Поэтому на ваши 3 вопроса нельзя ответить отдельно.

Оба обработчик завершения и обратный вызов являются синонимами для (экранирующего) замыкания - который являетсяБыстрое имя для блока .
@escaping указывает на то, что замыкание вызывается позже после возврата из функции включения.

A typealias - это просто удобный идентификатор, который заменяет более сложную правую сторону более простой левой стороной.Это напрямую не связано с замыканиями.

...