NSTimer doesn't get fired at specified date

cocoa, nsdate, nstimer, objective-c

Solution

A time created with `initWithFireDate` must be added to a run loop, e.g.

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

Use `scheduledTimerWithTimeInterval` to create a timer that is automatically scheduled on the current run loop.

PS: The `description` method of `NSDate` uses always GMT, that probably explains your output.

Problem

I'm creating an NSTimer: ``` NSTimer *saveProgressSizeTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:2.0f] interval:1.0f target:self selector:@selector(myMethod:) userInfo:myUserInfo repeats:YES]; ``` However, the timer doesn't get fired. The method doesn't get invoked. If I print my date I get the following: 2012-10-12 15:19:02.786 MyApp[1768:303] fire date: 2012-10-12 13:21:02 +0000 Shouldn't it be "2012-10-12 15:21:02" ? Somehow the hours are wrong. But why? If I change the Time Zone from UTC/GMT +1 hour (I'm sitting in Germany) to another, the date is still 2012-10-12 13:19:02 plus two seconds. What am I doing wrong? Thanks!

Original source