【问题标题】:Creating defaults in Objective C在 Objective C 中创建默认值
【发布时间】:2012-07-12 22:03:31
【问题描述】:

我正在开发我的第一个大型应用程序,但无意中因设计中的一个小缺陷而使自己陷入恐慌。我制作了一个计时器,只需按一下按钮即可计数,然后在第二次触摸时转换为具有 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 = @"";
        }
    }
}

【问题讨论】:

  • 你可能想用objective c而不是简单的c来标记。
  • 我为你重新标记了这个问题。但是,我很难准确理解您的要求。我知道这是一个模糊的建议,但请尝试更清楚地解释您要完成的工作。此外,你应该编辑你的帖子标题,因为你问的是使用一个似乎与“创建默认值”没有任何关系的计时器。

标签: objective-c ios cocoa-touch nstimer countdown


【解决方案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;
    }
}

【讨论】:

    猜你喜欢
    • 2010-10-26
    • 2011-02-19
    • 1970-01-01
    • 2012-04-07
    • 2011-08-24
    • 2019-03-22
    • 2014-09-11
    • 2011-11-30
    • 1970-01-01
    相关资源
    最近更新 更多