2012-05-08 58 views
0

我注意到[NSDate日期]从睡眠中醒来后不久返回旧的日期和时间。我无法找到有关此规范的任何信息,或者在醒来后如何刷新当前日期和时间。NSDate日期没有返回当前的日期和时间后醒来

有没有人有任何关于行为的信息?

+0

这听起来像一个相当严重的错误 - 你确定你没有看一些'NSDate'对象的缓存副本吗? – trojanfoe

+0

在唤醒后立即在viewWillLoad方法中调用[NSDate date]。我的理解是因为这是一个类方法,它没有被缓存,并且应该总是返回当前的日期和时间。但是如果稍后再调用[NSDate日期],那么它会返回当前的日期和时间。所以我怀疑iOS中的时间问题是在醒来后更新的。 – lschult2

+0

@trojanfoe:你的问题让我以新的眼光看待这个问题。我遇到的问题不是这个。这是一些旧的NSURLConnection对象,在使用旧时间戳唤醒后再次启动之前还没有完成。我以为我在睡觉之前完成了所有旧交易,但事实并非如此。所以我错误地认为这些问题与NSDate有关。 – lschult2

回答

0

您是否将NSDate保存在ivar中,并在应用重新启动后进行检查?如果是这样的话,这将是旧日期。

您可以重新初始化viewWillAppear,或在AppDelegate中执行。或者,您也可以在退出时将其设置为nil

0

也许尝试处理applicationSignificantTimeChange:应用程序委托方法或UIApplicationSignificantTimeChangeNotification通知。

applicationSignificantTimeChange:文档:

如果您的应用程序目前已被暂停,这条消息在排队 ,直到你的应用程序返回到前台,此时它被 交付。如果发生多个时间更改,则仅发送最近的一个 。

这可能是因为你必须等到这一点才能从NSDate类获得准确的数据。您的意见可能过早加载。

然而,在viewWillAppear:中做这种事情可能会更好,但我有一种感觉,如果你这样做,你可以避免处理重大的时间变化事件。

相关问题