Уведомления (см. главу 11) могут, в частности, служить для связи между объектами, которые принципиально отдалены и не обязательно должны видеть друг друга.

Для связи им требуется лишь одно: знать имя уведомления. Каждый объект может видеть центр уведомлений, и поэтому каждый объект можно организовать для отправки или получения уведомлений. Такое применение уведомлений может показаться пассивным уклонением от ответственности за благоразумное построение объектов. Иногда одному объекту совершенно не обязательно и даже не нужно знать, каким именно объектам он посылает сообщение.

Характерный тому пример был приведен в главе 11. Рассмотрим еще один пример. В одном из моих приложений его делегат может обнаружить потребность перестроить интерфейс сызнова. Если это должно произойти без утечек памяти (и всего связанного с этим опустошения), то каждый контроллер представления, который в настоящий момент управляет периодическим таймером типа NSTimer, должен сделать этот таймер недействительным (см. главу 12).

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


 

 

 

Добавить комментарий