как сбросить / убить статические переменные int в цель c - PullRequest
2 голосов
/ 13 сентября 2011

Я использую статические переменные типа int, но у меня возникли проблемы.Проблема в том, что он не получает сброс.Если я покину эту страницу и зайду снова, тогда я найду предыдущие значения, пока сбрасываю ее.

Пожалуйста, дайте мне решение.

вот мой код

- (void)updateQuestion:(NSTimer *)theTimer {
    static int questionCounter = 1;

    questionCounter += 1;


    count=(questionCounter%QUESTION_TIME_LIMIT);

    tfLeftTime.text=[NSString stringWithFormat:@"%d",QUESTION_TIME_LIMIT];


    tmLeftTime=[[NSTimer alloc] init];
    tmLeftTime=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLeftTime:) userInfo:nil repeats:YES];
    [self playMusic];
    if (questionCounter>QUESTION_PER_LEVEL) {
        if ([tmQuestion isValid]) {
            [tmQuestion invalidate];
            questionCounter=1;
            count=1;
            tmQuestion=nil;
            [self showAdvertisement];
        }
    }

}

СпасибоС уважением, Шивам

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011
  1. Нельзя объявлять статическую переменную в одном методе и использовать в другом. Я предполагаю, что вы объявили это в файле, вне каких-либо методов. Вместо этого используйте переменные экземпляра.
  2. У вас утечка памяти по адресу:

    tmLeftTime = [[NSTimer alloc] init];

    tmLeftTime = [NSTimer scheduleTimerWithTimeInterval: 1.0f target: self selector: @selector (updateLeftTime :) userInfo: nil повторяется: YES];

Первое выделение tmLeftTime никогда не освобождается.

[NSTimer scheduleTimerWithTimeInterval: target: селектор: userInfo: repeat:] дает вам автоматически выпущенный таймер.

0 голосов
/ 13 сентября 2011

Вы также можете использовать переменную экземпляра для получения желаемого эффекта.

Счетчик будет оставаться в течение всего времени существования объекта и уничтожается, когда он вам больше не нужен.

...