与NSUserDefault类相关的问题

时间:2010-08-26 09:50:05

标签: iphone

我正在使用NSUserDefault类为Iphone os 4.0执行状态miantainance代码。 当我点击主页然后点击应用程序然后它工作,但当我点击主页,然后按下构建和运行按钮它不起作用 为什么会这样?

1 个答案:

答案 0 :(得分:2)

当您按iOS 4上的主页按钮时,应用程序不会停止。它被暂停并进入后台状态。此时,应用程序UI的状态将自动维护。

当你点击构建时,应用程序会被强制退出,然后再从Xcode运行。

我假设您保存UI状态的代码位于applicationWillTerminate方法中。如果是这种情况,那么你的代码永远不会在iOS 4上运行,因为不再调用这种方法,(至少我从自己的测试和其他人的经验中看到过这种情况)。在应用程序被强制退出的情况下(即,在执行构建和运行时通过Xcode),绕过applicationWillTerminate方法。

您应该实施applicationDidEnterBackgroundapplicationWillEnterForeground方法。

这样,只要应用程序背景化,它就会将其状态写入NSUserDefaults,确保在应用程序退出之前保存状态

在iOS 4上,实际完全退出应用程序的唯一方法是使用强制退出应用程序的多任务UI(双击主页按钮)。这就是为什么实现上面的后台方法很重要,因为它们更有可能被执行。

作为最后一点,在编写UI状态之后,可能值得在synchronize实例上调用NSUserDefaults,以确保此时默认值被写入磁盘。