【问题标题】:Inheritance and dealing with NSNotificationCenterNSNotificationCenter 的继承与处理
【发布时间】:2009-04-11 01:08:28
【问题描述】:

NSNotificationCenter 观察者的继承是如何工作的?我有一个父类,其他几个类最终成为子类。父类将自己注册为特定通知的观察者。我的印象是,只要您调用发生注册的超级方法,孩子也会被注册为观察者。我碰巧把它放到了viewDidLoad中。

我是否需要重新注册子类也是观察者并重新实现它们的委托方法?

【问题讨论】:

    标签: objective-c oop inheritance


    【解决方案1】:

    您正在向通知中心注册对象,而不是。当您注册通知时,您注册的回调方法会在注册的对象上被调用,如果您在子类中覆盖了它,那么被覆盖的方法会被调用。

    如果您在子类中执行此操作,请问问自己注册通知的父代码是否在子类中被调用。

    这是面向对象编程和继承的核心。

    【讨论】:

    • 我猜你可以在通知中心注册一个类,但这有点吓人……
    【解决方案2】:

    每个调用-[super viewDidLoad] 的实例最终都会收到通知。您不需要重写通知处理方法,因为将调用超类的实现。当然,如果在子类中这还不够,那么您必须提供覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多