Ich erstelle eine App, die einige Ereignisse melden soll. Es hat akustische Benachrichtigung und NSView/HUD-Benachrichtigung.NSSound funktioniert nach einigen Stunden nicht mehr
Während des Debuggens habe ich es stundenlang laufen lassen. Ich habe bemerkt, dass nach einigen Stunden 8+ der NSSound aufhört Geräusche zu machen.
Mein Code ist einfach und funktioniert während der ersten paar Stunden:
Aus läuft:
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];
}
, die von durch die Registrierung CFRunLoopSource genannt wird:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
mRunLoopSource = (CFRunLoopSourceRef)IOPSNotificationCreateRunLoopSource(onStateUpdate, (__bridge void *)(self));
if(mRunLoopSource) {
CFRunLoopAddSource(CFRunLoopGetCurrent(), mRunLoopSource, kCFRunLoopDefaultMode);
}
}
Dieser Code ist Kommen mit HUD-Code und NSLog von gemeldeten Ereignissen. So weiß ich, dass es tatsächlich wie erwartet ausgeführt wird, aber das Betriebssystem "stumm" einfach oder ignoriert den NSSound, da es nicht fehlschlägt.
Was mache ich falsch? Wie kann ich dafür sorgen, dass es weiterhin funktioniert, da dies zu einer Tablet-App mit Benachrichtigungen wird?
Können Sie den Code zeigen, wie Sie dies aufrufen? – rocky
Ich habe meine Frage mit mehr Code-Schnipsel aktualisiert. Es gibt natürlich eine CFRelease sobald die App heruntergefahren wird. –