如何在@selector中调用多个方法进行通知?

时间:2014-01-28 04:34:30

标签: ios objective-c

目前我只在应用程序进入前台时调用一个方法。如何在@selector中调用各种方法?

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(displayHappyFace)
                                             name:UIApplicationWillEnterForegroundNotification
                                           object:nil];

3 个答案:

答案 0 :(得分:2)

只需为您的所有其他功能创建一个单独的功能。

[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(AllFunction)
                                             name:UIApplicationWillEnterForegroundNotification
                                           object:nil];

所有功能。

-(void) AllFunction
{
    [self displayHappyFace];
    [self otherFunction];
}

答案 1 :(得分:1)

如果您希望将方法逻辑分开,请将另一个观察者添加到UIApplicationWillEnterForegroundNotification

[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(displayHappyFace)
                                         name:UIApplicationWillEnterForegroundNotification
                                       object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                     selector:@selector(callOtherMethod)
                                         name:UIApplicationWillEnterForegroundNotification
                                       object:nil];

@selector仅支持一种方法。请记住在释放内存之前删除self作为观察者,以避免将消息传递给nil对象。

答案 2 :(得分:0)

你只能在那里放一个选择器。 最佳做法是为每个通知创建一个名为handleNotificationName的新方法。

示例:

- (void)handleUIApplicationWillEnterForegroundNotification:(NSNotification *)aUIApplicationWillEnterForegroundNotification { }

这使您可以轻松找出应用处理每个通知的位置并简化代码维护。

在处理程序方法中,您可以调用所需的任何方法。您也可以根据您拥有的状态或基于Notification的userInfo字典(如果有的话)具有条件逻辑。

不要忘记在对象的dealloc方法中删除通知观察者(至少,如果不是其他地方,因为您可能不希望总是收到通知,具体取决于用例)