我正在構建一個應用程序,以便通知某些事件。 它有聲音通知和NSView/HUD通知。NSSound在幾個小時後停止工作
在調試過程中,我一直在運行幾個小時。我注意到幾個小時後,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應用程序正在關閉。 –