Frage

Ich habe eine einfache Anwendung, die bis Mitternacht herunterzählt, und dann spielt ein Piepen ertönen immer und immer wieder und blinkt die Beschriftung, die Zeit zeigt. Also das Etikett Blinzeln verwendet ein NSTimer, während das Piepen auf einem eigenen Thread geht, so dass die reine C-Funktion (für den Sound-System-ID Abschluss Rückruf) verwenden kann [NSThread sleepForTimeInterval: ...]; ein bisschen dazwischen spielt den Alarm Piepton zu warten. So bekomme ich zwei Fehlermeldungen während der Ausführung Theres keinen Autofreigabepool sagen, und es wird nur auslaufen. Sein, weil in der Methode, die ich in einen neuen Thread nenne, ist es zwei @ „Strings“, die die System-Sound-ID (Dateiname und Erweiterung) verwendet, zu schaffen. Gibt es eine Weise, die ich nicht einen Autofreigabepool nutzen kann, da dies die einzigen zwei Dinge sind, die jemals versuchen, es zu benutzen. Danke.

Oder soll ich zwei NSTimers statt einem anderen Thread ..?

Ben Gottlieb Antwort war richtig, aber ich eine andere NSTimer stattdessen entschieden, weil ich über vergessen, wie es ist nicht wirklich auf die Zeit synchronisiert, wenn Sie den Thread als die tatsächliche Ausführung des Codes schlafen, bevor es ein wenig Zeit in Anspruch nimmt. Und es macht die Dinge symmetrisch;).

War es hilfreich?

Lösung

Nur einen Autofreigabepool in der Thread-Methode erstellen:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

...thread body...

[pool release];

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top