Наследование и работа с NSNotificationCenter - PullRequest
0 голосов
/ 11 апреля 2009

Как работает наследование наблюдателей NSNotificationCenter? У меня есть родительский класс, который несколько других классов в конечном итоге подклассов. Родительский класс регистрируется как наблюдатель для определенного уведомления. У меня сложилось впечатление, что дети также будут зарегистрированы в качестве наблюдателей, если вы будете использовать супер метод, где происходит регистрация. Я случайно поместил его в viewDidLoad.

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

Ответы [ 2 ]

4 голосов
/ 11 апреля 2009

Вы регистрируете объекты , а не классы , с центрами уведомлений. Когда вы регистрируетесь для уведомления, регистрируемый вами метод обратного вызова вызывается для объекта, который регистрируется, и если вы переопределили его в подклассе, то вызывается переопределенный метод.

Если вы делаете это в подклассе, спросите себя, вызывается ли в родительском коде код родителя, который регистрируется для уведомления.

Все это имеет ключевое значение для объектно-ориентированного программирования и наследования.

1 голос
/ 11 апреля 2009

Каждый экземпляр, который вызывает -[super viewDidLoad], должен в конечном итоге получать уведомления. Вам не нужно переопределять метод обработки уведомлений, так как будет вызвана реализация суперкласса. Конечно, если этого недостаточно в подклассе, вам придется предоставить переопределение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...