NSTimer不会在指定日期被解雇

Dan*_*iel 4 cocoa objective-c nsdate nstimer

我正在创建一个NSTimer:

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

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

2012-10-12 15:19:02.786 MyApp [1768:303]发布日期:2012-10-12 13:21:02 +0000

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

我究竟做错了什么?

谢谢!

Mar*_*n R 16

initWithFireDate必须将创建的时间添加到运行循环中,例如

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
Run Code Online (Sandbox Code Playgroud)

使用scheduledTimerWithTimeInterval来创建自动安排对当前运行的循环计时器.

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