NSNotificationCenter观察者的继承如何工作?我有一个父类,其他几个类最终继承子类。父类将自身注册为特定通知的观察者。我的印象是,只要你调用注册发生的超级方法,孩子们也会被注册为观察员。我碰巧将它放入viewDidLoad。
我是否需要重新注册子类,也是观察者并重新实现他们的委托方法?
答案 0 :(得分:4)
您正在使用通知中心注册对象,而非类。当您注册通知时,您注册的回调方法将在注册的对象上调用,如果您在子类中重写它,则会调用重写的方法。
如果您在子类中执行此操作,请问自己是否在子类中调用了父代的注册通知代码。
这是面向对象编程和继承的核心。
答案 1 :(得分:1)
每个调用-[super viewDidLoad]
的实例都应该收到通知。您不需要覆盖通知处理方法,因为将调用超类的实现。当然,如果在子类中这还不够,那么你必须提供覆盖。