xcode вызывает int переопределяя значение int при вызове в другой функции - PullRequest
3 голосов
/ 14 мая 2011

У меня проблемы с приращением int из одной функции путем вызова его в другой функции.

На данный момент бит, над которым я работаю, выглядит так:

в файле .h я объявляю int и timer так:

int count;
NSTimer *sequenceOn;

в файле .m сегмент моей функции выглядит так:

-(void) sequence {
count = 1;

while (count < (target)) {


    sequenceOn = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(imagePlayer) userInfo:nil repeats:NO];

 }
}

-(void)imagePlayer {

 --CODE HERE FOR PLAYING ANIMATION--
    count = count + 1;
}

Весь мой другой код работает нормально, и он должен проигрывать серию изображений, используя значение счетчика, чтобы решить, какой из них воспроизводить. В настоящий момент он воспроизводит только первую анимацию и не увеличивает ее до следующей.

Любая помощь будет высоко ценится.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 14 мая 2011

Я не вижу ничего в вашем цикле while, который увеличивает count или уменьшает target, поэтому либо это бесконечный цикл, либо он никогда не выполняется, в зависимости от значения target.

0 голосов
/ 14 мая 2011

Таймеры будут срабатывать из цикла выполнения , который ваш код блокирует во время выполнения цикла.Вы, вероятно, хотите, чтобы таймер регулярно вызывал ваш метод:

-(void)stopTimer {
    [sequenceOn invalidate]; 
    sequenceOn = nil;
}

-(void)sequence {
    [self stopTimer];
    count = 1;
    // start a repeating timer:
    sequenceOn = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self       
                  selector:@selector(imagePlayer) userInfo:nil repeats:YES];
}

-(void)imagePlayer {  
    //--CODE HERE FOR PLAYING ANIMATION--
    count = count + 1;
    if (count >= target) {
        [self stopTimer];
    } 
}
0 голосов
/ 14 мая 2011

У вас есть последний аргумент scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:, установленный на NO , это то, что вы хотите, он будет срабатывать только один раз.Если нет, вам придется дать нам больше кода, чтобы показать, как imagePlayer вызывается повторно.

...