Вот код:
- (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.
Любые идеи??
Элайджа
NSRunAlertPanel
и добавьте что-нибудь еще. Вы сами сказали, что это проблема. Начните с этого. - person Jason McCreary   schedule 05.07.2010double
строк и сравните их, используя оператор C меньше чем. - person Peter Hosey   schedule 05.07.2010double
и сравнить эти значения с помощью оператора C "меньше". Вы можете посмотреть первую часть в документации (см. меню «Справка» Xcode), и вы уже должны знать вторую часть, так как вам нужно знать хотя бы базовый C для эффективного использования Cocoa. Если нет, рекомендую эту книгу: oreilly.com/catalog/9780596804794 - person Peter Hosey   schedule 05.07.2010