Я создаю приложение, которое предполагает уведомить некоторые события. Имеет звуковое уведомление и уведомление NSView/HUD.NSSound перестает работать через несколько часов
В процессе отладки я продолжал работать в течение нескольких часов. Я заметил, что через несколько часов 8+ NSSound перестает звучать.
Мой код прост и работает в течение первых нескольких часов:
Он бежит от:
void onStateUpdate(void* context) {
NSSound* myAwesomeSound = [NSSound soundNamed:existingSoundFile];
if (myAwesomeSound == nil)
NSLog(@"\n\nERROR FINDING SOUND!!!?!?!\n\n");
else
NSLog(@"Code is being called!");
[myAwesomeSound play];
[myVisualHUD start];
}
, который вызывается из регистрирующим CFRunLoopSource:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
mRunLoopSource = (CFRunLoopSourceRef)IOPSNotificationCreateRunLoopSource(onStateUpdate, (__bridge void *)(self));
if(mRunLoopSource) {
CFRunLoopAddSource(CFRunLoopGetCurrent(), mRunLoopSource, kCFRunLoopDefaultMode);
}
}
Этот код с кодом HUD и NSLog зарегистрированных событий. Итак, я знаю, что он работает так, как ожидалось, но ОС просто «отключает» или игнорирует NSSound, поскольку он не терпит неудачу.
Что я делаю неправильно? Как я могу заставить его продолжать работать, так как это в конечном итоге станет приложением с уведомлением.
Можете ли вы показать код о том, как вы это называете? – rocky
Я обновил свой вопрос с помощью дополнительных фрагментов кода. Конечно, когда-то приложение закрывается, CFRelease. –