0

我正在开发适用于 iphone OS 3.1 的应用程序。在应用程序中,我有“设置”选项卡,用户可以在其中更新一些在应用程序终止和重新启动时有效的值。

我现在已经构建了这个应用程序,将 Base SDK 设置为“设备 4.0”,并将部署目标设置为“iOS 3.1”,因为我不想失去 iOS 3.1 用户群。

在 iphone 模拟器 3.2 上运行此版本的应用程序,我没有任何问题。

为了在 iPhone OS 3.1 升级到 iOS4 的情况下测试应用程序,我在设备“iPhone”和 iphone 模拟器中的“4.0”版本上运行此版本。由于 iOS4 中的应用程序多任务,当我按下“主页”按钮时,我的应用程序不会“终止”,而是(如预期的那样)它进入后台并按下应用程序图标,它又回到前台。

这一切都很好,当用户更改应用程序中的设置时出现问题,按下“主页”不会终止应用程序....因此新设置将无效,因为应用程序不会重新启动,但只会在“前台”返回......事实上,除非用户明确终止应用程序,否则应用程序可能永远不会终止。

在不使用 iOS4 API 的情况下,如何识别应用程序何时“重新启动”以及何时进入“前台”,以便在应用程序进入“前台”时强制重新读取设置?

提前致谢。

4

1 回答 1

2

为了在后台处理应用程序设置的更改,您需要NSUserDefaultsDidChangeNotification通过更新受更改设置影响的应用程序部分来监听并响应它。当您的应用程序重新进入前台时,如果应用程序的任何设置在暂停期间发生更改,它将收到此通知。

例如,您可以使用如下代码在其中一个控制器中侦听此通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleChangeInUserSettings:) name:NSUserDefaultsDidChangeNotification object:nil];

where-handleChangeInUserSettings:是一种执行更新以反映更改的用户设置所需的方法。

于 2010-07-31T00:53:42.580 回答