使用两名代表

时间:2011-03-08 06:40:01

标签: ios iphone background delegates notifications

我是iPhone编程新手。我想调用属于我在MyAppDelegate中的一个视图的函数。我想这样做是因为我在视图中找不到任何ApplicationDidEnterBackground()事件。    所以,基本上我想在应用程序最小化时调用view的函数。我确实尝试过使用委托。但是我找不到如何使用两个委托,因为MyAppDelegate已经有一个委托。请帮忙。

1 个答案:

答案 0 :(得分:3)

一般设计模式是,如果您在活动中有多个感兴趣的参与方,请不要使用代理,而是使用通知。在这种情况下,您应该在您希望处理该事件的每个班级的UIApplicationDidEnterBackgroundNotification方法中注册-init

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didEnterBackground)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:[UIApplication sharedApplication]];

然后用您的代码编写-(void)didEnterBackground方法。在-dealloc方法中,请务必取消注册通知:

[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:UIApplicationDidEnterBackgroundNotification
                                              object:nil];

另外,请注意此代码需要iOS 4.x或更高版本。如果您想保持iOS 3的兼容性,首先要检查可用性:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(applicationState)]) {
    // register UIApplicationDidEnterBackgroundNotification
}