0

我正在开发我的第一个大型应用程序,无意中让自己因设计中的一个小缺陷而陷入恐慌。我制作了一个计时器,只需按一下按钮即可计数,然后在第二次触摸时转换为具有 60 秒倒计时的辅助计时器。

问题在于,一旦我重复此过程,就会记住 (kRest-Pause) 调用。我希望创建一个默认的 60 倒计时,而不需要时间的延续。我应该在内存中杀死它并为每个后续按钮按下创建一个新实例吗?或者是否有一个逻辑游戏可以查看总时间并在每次新出现时进行更正?

我不知道如何解决这个问题,我已经尝试过带有返回的 -if 语句,因为我了解到这不是这样工作的。任何帮助,将不胜感激

编辑:对不起,不清楚。我对任何口径的编程都很熟悉。到目前为止,主计时器从 10-0 倒计时,然后从 0-120 向上倒计时。在这 2 分钟内,如果再次按下按钮,0-120 计数将暂停 60 秒或直到第三次按下按钮。如果这个 60-0 倒计时达到 0 或被中断,最初的 0-120 倒计时将恢复其计数。我的问题是,如果我第四次按下按钮,60-0 倒计时将从中断的那一刻开始恢复,而不保留默认值 60。这就是为什么我将帖子命名为“在 Objective C 中创建默认值”。这是错误使用这个词和广泛的方式,但这是我能想到的。

kRest=60

-(void)increase{

    if (mode==1){
        count++;

        int d = 10-count;

        if (d==0){ timeLabel.text = @"Begin";
            [self startPlaybackForPlayer: self.startTimerSound];}

        else {timeLabel.text = [NSString stringWithFormat:@"%d", abs(d)];}

        if(d<0){
            //workign out
            active = TRUE;
            if (d <= -20) {
                [self stopTimer];                 
            }
        }
        else{
            //no user interface
            active = FALSE;



        }
    }
    else{
        pause++;
        countdownLabel.text = [NSString stringWithFormat:@"%d!", (kRest-pause)];
        NSLog(@"Paused at time %d", pause);


        UIColor *textColor = nil;
        if (pause % 2==0){
            textColor = [UIColor yellowColor];
        }
        else{
            textColor = [UIColor redColor];

        }
        timeLabel.textColor = textColor;

        if ((kRest-pause)==0){
            countdownLabel.text = [NSString stringWithFormat:@"%d!",pause];
            mode=1;
            pause=0;
            [button setTitle:@"Stop" forState:UIControlStateNormal];
            repCount++;
            myRepCount.text = [NSString stringWithFormat:@"Rep Count: %d", repCount];
            countdownLabel.text = @"";
        }
    }
}
4

1 回答 1

1

如果您使用计时器来访问此计数器,那么您应该能够更新计时器使用的计数器。只需确保同步对象,以便在阅读时不进行编辑。

这是我的意思的一个例子。

int counter = 0;

int limit = 60;

- (BOOL) incrementUntilReached{

    @synchronized(self){
        if (counter == limit) return YES;
        counter++;
        return NO;
    }
}

- (void) resetTimer{
    @synchronized(self){
        counter = 0;
    }
}

- (int) countsLeft {
    @synchronized(self){
        return limit - counter;
    }
}
于 2012-07-12T22:26:04.633 回答