В целом у вас есть 3 различных метода:
- Делегирование
- KVO (Наблюдение ключевого значения)
- Уведомления
Если вашей модели нужно только сообщить одному объекту (вашему контроллеру представления) об изменениях, делегирование - это путь. Может потребоваться дополнительная работа по созданию нового интерфейса, добавлению свойства делегата в модель и т. Д., Но это определенно стоит с точки зрения гибкости, повторного использования кода, дизайна и т. Д. Делегирование является стандартным шаблоном в программировании Какао и является широко используется в API Apple.
Если вашей модели необходимо сообщить нескольким объектам об изменениях, вы хотите использовать KVO или уведомления. С KVO вы можете подписаться на изменение событий для определенного свойства или ключа модели. Например, когда свойство 'messages' в вашей модели изменяется, любые подключенные слушатели могут быть уведомлены об изменении и ответить соответствующим образом.
Уведомления используются, когда вы хотите отправить сообщения всего приложения нескольким слушателям. Примерами стандартных API-интерфейсов являются уведомления клавиатуры (когда клавиатура отображается / отклоняется) и изменяется ориентация интерфейса.
Так что в вашем случае делегирование или KVO, вероятно, будет лучшим выбором.