2009-04-11 2 views
0

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

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

ответ

1

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

4

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

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

Это все центральное место в объектно-ориентированном программировании и наследовании.

+0

Я догадываюсь, что вы зарегистрировали класс с центром уведомлений, но это было бы страшно ... –

Смежные вопросы