为什么我的 NSTimer 在到期时不调用我的方法?

Why isn't my NSTimer calling my method upon expiration?

我正在使用 NSTimer 调用名为 Lose 的方法。我有一个计时器,当它 运行 结束时,它会调用 Lose,但由于硬盘驱动器错误,我失去了一切。在尝试再次编写代码之后,我似乎无法调用要调用的方法。

Timer = [NSTimer timerWithTimeInterval:timeMax target:self selector:@selector(Lose) userInfo:nil repeats:NO];

Lose 在我的 .h 文件中声明,如下所示:

-(void)Lose;

另外,我的方法是这样的:

-(void)Lose{

Text.hidden = NO;
scoreLabel.hidden = NO;
Target.hidden = YES;
Targetx.hidden = YES;


if (Score > highScoreNumber) {
    highScoreAchieved.hidden = NO;
    highScoreNumber = Score;
    }

}

和上次一样,变量 timeMax 是在我的 .h 文件中声明的 int。 每当在我的游戏中点击一个目标时,timeMax 就会缩短 0.03 秒。我是这样做的:

timeMax = 5 - (Score * 0.03);

我不记得在大规模硬件故障之前它看起来有什么不同,但为什么它不起作用?

您必须在 运行 循环中安排计时器,或者只使用为您安排的这一行:

Timer = [NSTimer scheduledTimerWithTimeInterval:timeMax
                                         target:self
                                       selector:@selector(Lose)
                                       userInfo:nil
                                        repeats:NO];

始终备份您的代码也是一个好主意...这提醒了我。