簡體   English   中英

在目標C中創建默認值

[英]Creating defaults in Objective C

我正在開發我的第一個大型應用程序,無意間因設計中的一個小缺陷而陷入恐慌。 我制作了一個計時器,只需按一下按鈕即可計數,再按一次,便會轉換為具有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 = @"";
        }
    }
}

如果您使用計時器訪問此計數器,則應該能夠更新計時器使用的計數器。 只要確保您同步了對象,就可以在閱讀時不進行編輯。

這是我的意思的一個例子。

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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM