Objective c 计时器标签为';不要倒计时

Objective c 计时器标签为';不要倒计时,objective-c,Objective C,这不是全部代码。我已确保我已正确声明了所有内容,但标签不会随着“秒数”的减少而改变 我不知道为什么在'subtractTime'中,我将timerLabel.text设置为使用秒格式的字符串,该格式为“应该”,并且在我使用警报重置游戏时正在倒计时,因此即使标签没有更改,我知道它正在倒计时,否则警报不会从等于0的'seconds'触发 - (void)setupGame; { seconds = 30; count = 0; timerLabel.text = [NSSt

这不是全部代码。我已确保我已正确声明了所有内容,但标签不会随着“秒数”的减少而改变

我不知道为什么在'subtractTime'中,我将timerLabel.text设置为使用秒格式的字符串,该格式为“应该”,并且在我使用警报重置游戏时正在倒计时,因此即使标签没有更改,我知道它正在倒计时,否则警报不会从等于0的'seconds'触发

- (void)setupGame;
{
    seconds = 30;
    count = 0;

    timerLabel.text = [NSString stringWithFormat: @"Time: %i", seconds];
    scoreLabel.text = [NSString stringWithFormat: @"Score: %i", count];

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0
         target:self
         selector:@selector(subtractTime)
         userInfo:nil
         repeats:YES];

}
- (void)subtractTime;
{
    seconds--;
    timerLabel.text = [NSString stringWithFormat:@"Time: %i", seconds];

    if (seconds == 0)
    {
        [timer invalidate];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Time is up !" 
                          message: [NSString stringWithFormat: @"You Scored %i points", count]
                          delegate:self
                          cancelButtonTitle: @"Play Again"
                          otherButtonTitles:nil];

        [alert show];
    }

}
@end

确保在故事板/界面生成器中,标签已正确连接到viewXontroller的.h文件。测试这一点的一个好方法是在XIB上用“时间”以外的东西“打底”你的标签,而不是用像“foo”这样毫无意义的东西。这样,您就能够准确地判断标签是否在更改,而不是排除Int值是否正确显示的故障。

如果您在IB中创建了
timerLabel
,它是否正确连接?IBUILabel*scoreLabel;IBUILabel*时间标签;NSInteger计数;NSInteger秒;n定时器*定时器;您是否在Interface Builder中建立了连接?您有一个额外的
在减法时间方法之后。我不确定,因为我是一个非常新手的obj-c程序员。什么是接口生成器?添加`assert(timerLabel!=nil,@“timerLabel nil!”);在你的项目中,切换助手视图(它看起来像一个小燕尾服图标,位于XCode窗口的右上角)。在左侧窗格中打开XIB/情节提要,在右侧窗格中打开viewController的.h文件。右键单击并从XIB中的标签拖动到.h文件中的标签声明。感谢D80,它修复了我的问题,因为我没有正确链接它。@user2602189:使用断言验证变量的状态。如果断言失败,程序将停止。断言有助于调试。更好的是,使用NSAssert。