Каков лучший подход в iOS для передачи сообщений, NSNotification или делегирования?

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

2 ответа

  1. Концептуально делегат является помощником или объектом, который выполняет часть работы для какого-то другого объекта, что он не может сделать сам. Часто будет задействован протокол, и объект, имеющий ссылку на делегат, ожидает, что он будет вести себя предопределенным образом или, по крайней мере, таким образом, который специфичен для потребностей вызывающего класса.

    Пример: все методы, определенные для aUITableViewDelegate, специфичны для действия таблицы.

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

    Пример: объект, который получаетUIApplicationDidBecomeActiveNotification, может делать все, что нужно разработчику в то время, а не только вещи, связанные с UIApplication.

  2. Шаблоны делегатов используются в основном из-за того, что объект делегата знает, в каком классе реализуются методы делегата. Delegate Object содержит ссылки на объект того класса, в котором вы хотите выполнить задачу.

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