【发布时间】:2009-04-11 01:08:28
【问题描述】:
NSNotificationCenter 观察者的继承是如何工作的?我有一个父类,其他几个类最终成为子类。父类将自己注册为特定通知的观察者。我的印象是,只要您调用发生注册的超级方法,孩子也会被注册为观察者。我碰巧把它放到了viewDidLoad中。
我是否需要重新注册子类也是观察者并重新实现它们的委托方法?
【问题讨论】:
标签: objective-c oop inheritance
NSNotificationCenter 观察者的继承是如何工作的?我有一个父类,其他几个类最终成为子类。父类将自己注册为特定通知的观察者。我的印象是,只要您调用发生注册的超级方法,孩子也会被注册为观察者。我碰巧把它放到了viewDidLoad中。
我是否需要重新注册子类也是观察者并重新实现它们的委托方法?
【问题讨论】:
标签: objective-c oop inheritance
您正在向通知中心注册对象,而不是类。当您注册通知时,您注册的回调方法会在注册的对象上被调用,如果您在子类中覆盖了它,那么被覆盖的方法会被调用。
如果您在子类中执行此操作,请问问自己注册通知的父代码是否在子类中被调用。
这是面向对象编程和继承的核心。
【讨论】:
每个调用-[super viewDidLoad] 的实例最终都会收到通知。您不需要重写通知处理方法,因为将调用超类的实现。当然,如果在子类中这还不够,那么您必须提供覆盖。
【讨论】: