我现在真的很沮丧,在整个互联网上搜寻,迷迷糊糊地找到了SO,但仍然没有找到解决方案。

我正在尝试实现NSTimer,但是未调用我定义的方法。 (秒数设置正确,请使用断点检查)。这是代码:

- (void) setTimerForAlarm:(Alarm *)alarm {
    NSTimeInterval seconds = [[alarm alarmDate] timeIntervalSinceNow];
    theTimer = [NSTimer timerWithTimeInterval:seconds
                            target:self
                          selector:@selector(showAlarm:)
                          userInfo:alarm repeats:NO];
}

- (void) showAlarm:(Alarm *)alarm {
    NSLog(@"Alarm: %@", [alarm alarmText]);
}

对象“theTimer”由@property定义:
@interface FooAppDelegate : NSObject <NSApplicationDelegate, NSWindowDelegate>  {
@private

    NSTimer *theTimer;

}

@property (nonatomic, retain) NSTimer *theTimer;

- (void) setTimerForAlarm:(Alarm *)alarm;
- (void) showAlarm:(Alarm *)alarm;

我究竟做错了什么?

最佳答案

timerWithTimeInterval只会创建一个计时器,但不会将其添加到任何运行循环中以供执行。尝试

self.theTimer = [NSTimer scheduledTimerWithTimeInterval:seconds
                        target:self
                      selector:@selector(showAlarm:)
                      userInfo:alarm repeats:NO];

反而。

关于objective-c - NSTimer不调用方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6074337/

10-11 02:40