Iphone NSTimer:ApplicationIdentinterBackground:倒计时(如何保持状态)

Iphone NSTimer:ApplicationIdentinterBackground:倒计时(如何保持状态),iphone,objective-c,timer,nstimer,Iphone,Objective C,Timer,Nstimer,我有一个简单的倒计时计时器,每秒更新一个标签。当按下home(主页)按钮或将应用程序放在后台时,如何保持状态或错觉?实际上,如果您只需要维护一个计时器,则不需要在后台运行。在应用程序代理的应用程序中,将终止:,创建一个包含NSTimer启动时间的NSDictionary,并使用-[NSDictionary writeToFile:Atomicaly:将其写入plist,然后使用-[NSDictionary initWithContentsOfFile:]将其读回应用程序代理的应用程序中的某个位置

我有一个简单的倒计时计时器,每秒更新一个标签。当按下home(主页)按钮或将应用程序放在后台时,如何保持状态或错觉?

实际上,如果您只需要维护一个计时器,则不需要在后台运行。在应用程序代理的
应用程序中,将终止:
,创建一个包含NSTimer启动时间的NSDictionary,并使用
-[NSDictionary writeToFile:Atomicaly:
将其写入plist,然后使用
-[NSDictionary initWithContentsOfFile:]将其读回
应用程序代理的
应用程序中的某个位置:didfishlaunchingwithoptions:


如果仍在后台运行,请在
applicationidenterbackground:
applicationWillEnterForeground:
中执行相同的操作。如果使用此解决方案,请确保在编写plist后使计时器无效。

谢谢John,我正在尝试此方法。但是,当按下home(主页)按钮时,应用程序是进入后台还是终止?此外,在后台,NSTimer是否会失效?在iPhone OS 3.x和iOS 4.0之间,按下home按钮时的行为是不同的。在4.0中,applicationWillTerminate不会被调用,并且你的应用(通常)被放在后台,计时器不会启动,但不会失效(除非你自己在suspend方法中这样做);当你的应用程序回到前台时,他们会再次启动。但您的应用也可能被终止并重新启动。在MyApp-Info.plist中,具有原始密钥UIApplicationExitsOnSuspend(友好值:应用程序不在后台运行)的条目确定调用哪个应用程序,applicationWillTerminate:或ApplicationIdentinterBackground:。我不相信计时器会失效,但我不确定它们是否会在后台触发。当应用程序激活时,任何已通过的计时器都可能立即触发。这种行为在第二代iPod Touch和iPhone 4之间也可能有所不同。