【问题标题】:Using two delegates使用两个委托
【发布时间】:2011-03-08 06:40:00
【问题描述】:
我是 iPhone 编程的新手。我想在 MyAppDelegate 中调用属于我的视图之一的函数。我想这样做是因为我在视图中找不到任何 ApplicationDidEnterBackground() 事件。
所以,基本上我想在应用程序最小化时调用视图的函数。我确实尝试过使用委托。但是我找不到如何使用两个代表,因为 MyAppDelegate 已经有一个。请帮忙。
【问题讨论】:
标签:
ios
iphone
background
delegates
notifications
【解决方案1】:
一般的设计模式是,如果您在一个事件中有多个相关方,请不要使用委托,而是使用通知。在这种情况下,您应该在要处理事件的每个类的 -init 方法中注册一个 UIApplicationDidEnterBackgroundNotification:
[[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
}