objective-c – NSTimer在指定日期不会被解雇

objective-c – NSTimer在指定日期不会被解雇,第1张

概述我正在创建一个NSTimer: NSTimer *saveProgressSizeTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:2.0f] interval:1.0f target:self selector:@selector(myMethod:) 我正在创建一个NSTimer:

NSTimer *saveProgressSizeTimer = [[NSTimer alloc]    initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:2.0f]    interval:1.0f    target:self    selector:@selector(myMethod:)    userInfo:myUserInfo    repeats:YES];

但是,计时器不会被触发.该方法不会被调用.
如果我打印我的日期,我会得到以下内容:

2012-10-12 15:19:02.786 MyApp[1768:303] fire date: 2012-10-12 13:21:02 +0000

不应该是“2012-10-12 15:21:02”吗?不知怎的,时间错了.但为什么?如果我将时区从UTC / GMT 1小时(我坐在德国)改为另一个,那么日期仍然是2012-10-12 13:19:02再加上两秒.

我究竟做错了什么?

谢谢!

解决方法 必须将使用initWithFireDate创建的时间添加到运行循环中,例如

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

使用scheduledTimerWithTimeInterval创建在当前运行循环中自动调度的计时器.

PS:NSDate的描述方法总是使用GMT,这可能解释了你的输出.

总结

以上是内存溢出为你收集整理的objective-c – NSTimer在指定日期不会被解雇全部内容,希望文章能够帮你解决objective-c – NSTimer在指定日期不会被解雇所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1008335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存