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