在父母与子女的关系中使用NSNotificationCenter

时间:2014-12-31 06:33:25

标签: ios objective-c notifications

以下是这种情况: 当应用程序从后台到前台时,我会收到A类和A类寄存器通知。 我得到了另一个继承自A类的B类。

所以,如果我在A类和B类上实现选择器。 哪个选择器会被调用事件发生? 如果我只在B类上实现选择器呢? 它和亲子一样吗?

1 个答案:

答案 0 :(得分:1)

好的,让我们假设您在A类中使用viewDidLoad方法(我假设您正在使用UIViewController)注册通知;并取消注册viewWillDisappear:方法中的通知。然后,只要你在你的子类中调用super' (B类)等效方法,然后您的班级将收到这些通知。

为了响应这些通知,您需要创建一个方法,该方法在名为didEnterForeground的超类(A类)的.h文件中定义,并将此设置为当您的超类收到通知时要调用的选择器。您所要做的就是在子类(B类)中实现didEnterForeground以响应通知。

作为一个例子,我有一个自定义类UIViewController,它定义了我想要对应用程序通用的某些行为。我的超类RHViewController检测到某些触摸(例如,三个手指按住超过1秒)并调用选择器performQuickPrintRHViewController的子类然后实现performQuickPrint以响应用户按住3个手指。

为了仅在RHViewController的子类上实现代码,我永远不会调用super

如果您覆盖touchesBegan:withEvent:并且不要拨打[super touchesBegan:touches withEvent:event];,可能会失去很多功能,这有点像。

希望这有帮助。