应用程序进入后台IOS?

时间:2014-10-21 15:07:03

标签: ios objective-c

当调用应用程序委托的方法“ applicationDidEnterBackground ”但只获取applicationObject时,有一种方法可以通知对象。

我需要在应用程序获取后台时执行某些操作,但我只能通过“ [UIApplication sharedApplication] ”访问应用程序对象。

注意:我需要3个方法applicationWillTerminate,applicationWillEnterForeground,applicationDidEnterBackground但我无法访问applicationDelegate方法。

2 个答案:

答案 0 :(得分:2)

您可以使用NSNotificationCenter通知您的班级正在调用这些方法。 在init寄存器中输入正确的通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminateNotification:) name:UIApplicationWillTerminateNotification object:nil];

这将调用此方法的方法,您必须在该类中添加:

- (void)applicationWillTerminateNotification::(NSNotification *)notifictaion{
}

您要添加的通知包括:UIApplicationWillTerminateNotificationUIApplicationWillEnterForegroundNotificationUIApplicationDidEnterBackgroundNotification

不要忘记在您班级的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的解决方案更优雅。