当调用应用程序委托的方法“ applicationDidEnterBackground ”但只获取applicationObject时,有一种方法可以通知对象。
我需要在应用程序获取后台时执行某些操作,但我只能通过“ [UIApplication sharedApplication] ”访问应用程序对象。
注意:我需要3个方法applicationWillTerminate,applicationWillEnterForeground,applicationDidEnterBackground但我无法访问applicationDelegate方法。
答案 0 :(得分:2)
您可以使用NSNotificationCenter
通知您的班级正在调用这些方法。
在init寄存器中输入正确的通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminateNotification:) name:UIApplicationWillTerminateNotification object:nil];
这将调用此方法的方法,您必须在该类中添加:
- (void)applicationWillTerminateNotification::(NSNotification *)notifictaion{
}
您要添加的通知包括:UIApplicationWillTerminateNotification
,UIApplicationWillEnterForegroundNotification
和UIApplicationDidEnterBackgroundNotification
不要忘记在您班级的dealloc
取消注册您的班级实例,即使在ARC中也是如此:
-(void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillTerminateNotification object:nil];
}
答案 1 :(得分:0)
我遇到了类似的问题。我的解决方案是获取AppDelegate的实例并将我的对象注册为观察者:
AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate addApplicationDidEnterBackgroundObserver:myobject];
// and later...
[appDelegate removeObserver:myobject];
确保rckoenes的解决方案更优雅。