Таймер, вызывающий зависание приложения в некоторых ситуациях - PullRequest
0 голосов
/ 05 июля 2010

Вот код:

- (IBAction) startRecognition:(id)sender {
    backgroundSoundLevel = [backgroundSoundChange stringValue];
    timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
}

- (void)timerFired:(NSTimer*)theTimer
{   
    NSString *charlieSoundVolume = [charlieSoundLevel stringValue];
    if ([charlieSoundVolume isLessThan: backgroundSoundLevel]) {
        NSRunAlertPanel(@"", charlieSoundVolume, @"", @"", @"");
    }
}

Таким образом, когда вы нажимаете кнопку «startRecognition», запускается цикл таймера «Таймер сработал».НО когда значение charlieSoundVolume меньше backgroundSoundLevel, приложение останавливается.Когда оно больше, оно отлично работает.Так что с этой частью кода что-то не так.Я не совсем уверен, что ...

Справочная информация: charlieSoundVolume - это текущий объем, выраженный в NSString.backgroundSoundVolume также выражается в NSString.CharlieSoundVolume - это текущая громкость, а backgroundSoundVolume - это предустановленная громкость, заданная NSSlider backGroundSoundChange.

Любые идеи ??

Илия

1 Ответ

0 голосов
/ 05 июля 2010

Вот рабочий код:

- (IBAction) startRecognition:(id)sender {
    timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
}

- (void)timerFired:(NSTimer*)theTimer
{   
    backgroundSoundLevel = [backgroundSoundChange stringValue];
    NSString *charlieSoundVolume = [charlieSoundLevel stringValue];
    if ([charlieSoundVolume  isLessThan: backgroundSoundLevel]) {
        NSRunAlertPanel(@"", charlieSoundVolume, @"", @"", @"");
    }
}
...