目前我只在应用程序进入前台时调用一个方法。如何在@selector中调用各种方法?
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(displayHappyFace)
name:UIApplicationWillEnterForegroundNotification
object:nil];
答案 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方法中删除通知观察者(至少,如果不是其他地方,因为您可能不希望总是收到通知,具体取决于用例)