Нотификации(уведомления)

В приложениях IOS есть понятие «Центр уведомлений». Это единичный объект, который позволяет объектам получать уведомления о происходящих событиях. Это позволяет удовлетворить цели обмена данных между контроллером и произвольным объектом с низким уровнем сцепления. Основная концепция этой модели является то, что контроллер использует ключ (имя уведомления) для того, чтобы позволить другим объектам услышать о специальных событиях, происходящих внутри контроллера. Тогда неведомые контроллеру, другие объекты (наблюдатели) могут реагировать на событие уведомления пути регистрации уведомлений с тем же ключом.

+

Простота внедрения, немного строк кода.

Можно легко иметь несколько объектов, реагирующие то же опубликованное уведомление.

-

Нет компиляции, чтобы убедиться в том, что уведомления правильно обработаны наблюдателями.

Требуется отмена регистрации с центром уведомлений, если ваш ранее зарегистрированный объект освобождается.

Не очень прослеживается. Попытка отладки проблем, связанных с потоками данных и управления может быть очень трудна.

Третий объект, необходимый для управления связью между контроллерами и объектами наблюдателей.

Нет возможности у контроллера получить какую-либо информацию обратно от наблюдателя после того, как уведомление опубликовано

Блоки

Изнутри блок представляет собой кусок кода, который может быть вызван в некоторый момент в будущем. Блок — это функция первого класса, поэтому можно сказать, что блоки — обычные объекты Objective-C. А объекты можно передавать как параметры, возвращать из функций и методов, и присваивать переменным. Блоки зачастую называют замыканиями (closures) в таких языках, как Python, Ruby и Lisp, потому что после объявления они инкапсулируют свое состояние. Блок создает константную копию любой локальной переменной, на которую ссылается.

Формат описания блоков такой:

return_type (^block_name)(param_type, param_type,...)

Простота. Используя блоки, мы можем получить доступ к объекту, индексу объекта в массиве и стоп-переменной без написания кода. Это приводит к уменьшению кода, что в свою очередь уменьшает количество ошибок.

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

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: