4

我注册在超类(UIViewController)中得到通知,如下所示:

超类.m

- (void)viewWillAppear:(BOOL)animated {

    [super viewWillAppear:animated];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(notification:)
                                                 name:@"Notification"
                                               object:nil];
}

- (void)notification:(NSNotification *)notification {

    // Do something for SuperClass with the notification
}

现在在子类(SuperClass.m 的子类)中,我也像这样监听相同的通知:

子类.m

- (void)notification:(NSNotification *)notification {

    // Do something specific for SubClass with the notification
}

这是一种可接受的(代码方面)方式来处理在处理超类中的通知时具有一般行为以及在处理子类中的通知时具有更具体的行为吗?

4

1 回答 1

2

通常,当您希望在子类中允许更具体的行为,同时仍保持超类中的一般行为时,您可以调用子类super。例如,-[UIViewController viewDidAppear:]文档说:

您可以覆盖此方法以执行与呈现视图相关的其他任务。如果您覆盖此方法,则必须super在您的实现中的某个时间点调用。

因此,您的通知设置很好(尽管将NSNotification对象作为您希望被覆盖的方法的参数有点奇怪)——但您也需要调用[super notification:notification]以获取超类的行为。

于 2012-12-20T03:41:16.963 回答