Из вашего описания похоже, что модель знает, когда задача завершена, поэтому модель должна отвечать за генерацию этого уведомления.
Проблема заключается в том, чтобы определить, куда следует отправлять Уведомление о «завершении задачи» в диспетчере моделей или в контроллере представления, который обрабатывает событие и получает обратный вызов от диспетчера моделей
Я не понимаю, что вы имеете в виду здесь. Цель использования уведомлений через NSNotificationCenter
состоит в том, чтобы отделить отправителя от получателя. Модель просто публикует сообщение в центр уведомлений, и заинтересованные подписчики получат сообщение через центр уведомлений . Для этого контролерам представления не нужно напрямую взаимодействовать с менеджером моделей.
Вот один из возможных рабочих процессов:
При запуске приложения:
1. View Controller 1 subscribes to "onTaskFinished" message at NotificationCenter
2. View Controller 2 subscribes to "onTaskFinished" message at NotificationCenter
3. User presses "Perform Task" button in some view controller
4. Model Manager gets triggered and performs the task
5. Model Manager publishes "onTaskFinished" message to NotificationCenter
View Controller - плохой выбор для отправки этого сообщения, так как оно объединяет контроллеры представления, и правильное функционирование вашего приложения зависит от правильного функционирования этого контроллера представления.
Рассмотрим случай, когда этот контроллер представления выгружается, потому что он занимал слишком много памяти. Теперь другие контроллеры представления не будут получать уведомление «задача выполнена», потому что контроллер представления, который отвечал за отправку этого уведомления, больше не находится в памяти и явно не прослушивал уведомления.