NSNumber *elapsedSeconds = [[NSNumber alloc] initWithInt:secs];
Как правило, не выделяйте NSNumbers, а NSDictionary (и NSArray, NSSet) всегда сохраняет объекты, которые ему даны (и освобождает их, когда это необходимо).
try ...
NSNumber *elapsedSeconds = [NSNumber numberWithInt:secs];
Это остановит сохраненный цикл и может остановить аварийное завершение.
Также не имеет значенияно по стилю.
NSInteger secs = [[[timer userInfo] valueForKey:@"TotalSeconds"] intValue];
Немного эффективнее.