- (void)applicationDidEnterBackground:(UIApplication *)application

Posted

技术标签:

【中文标题】- (void)applicationDidEnterBackground:(UIApplication *)application【英文标题】: 【发布时间】:2010-10-25 19:21:09 【问题描述】:

我可以在 AppDelegate 以外的地方使用下面的方法吗?如果可以,如何?


【问题讨论】:

【参考方案1】:

不,但您可以让其他对象注册UIApplicationDidEnterBackgroundNotification 通知。然后这些对象将在调用applicationDidEnterBackground: 的同时得到通知。

【讨论】:

这个答案似乎更可取,因为您没有发布多余的通知。【参考方案2】:

这是UIApplicationDelegate协议的一个方法,只能由符合它的类来实现。

您可以使用NSNotificationCenter 对象从您的应用委托中为您的应用中的其他对象设置通知:

- (void)applicationDidEnterBackground:(UIApplication *)application 
   [[NSNotificationCenter defaultCenter] postNotificationName:@"didEnterBackground" object:self];

您还可以收听UIApplicationDidEnterBackgroundNotification 通知,而不是执行上述操作。

像这样注册你想要监听通知的对象:

[[NSNotificationCenter defaultCenter] addObserver:someObject selector:@selector(someMethod:) name:@"UIApplicationDidEnterBackgroundNotification" object:nil];

【讨论】:

你能举个例子说明这段代码放在哪里,以及如何调用它?换句话说,这是保存整个视图,还是视图中的对象? 不要使用第一个选项。并在第二个选项中使用适当的常量,而不是硬编码通知名称。

以上是关于- (void)applicationDidEnterBackground:(UIApplication *)application的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS 8中应用程序处于后台状态时连续执行任务

JSPatch

无法导航到下一页 iPhone

iPhone游戏暂停和恢复,值得实现吗?

当应用程序进入后台时更改 rootview 控制器 (applicationDidEnterBackground)

将 UINavigationController 添加到窗口时的 EXC_BAD_ACCESS