Domanda

Ho una semplice applicazione che conta fino a mezzanotte e poi suona un segnale acustico più e più volte e lampeggia l'etichetta che indica il tempo.L'etichetta di un lampeggiante utilizza un NSTimer, mentre il segnale acustico va su un proprio Thread, in modo che la pura funzione C (per il suono di sistema id callback di completamento) è possibile utilizzare [NSThread sleepForTimeInterval:...];aspettare un po ' tra di suonare l'allarme, il segnale acustico.Ho quindi due messaggi di errore durante l'esecuzione di dire theres nessun autorelease pool e sarà solo una perdita.Ha il suo perché, nel metodo che io chiamo in un nuovo thread, non C'è due @"Stringhe" che vengono utilizzati per creare il Suono di Sistema ID (il nome del file e l'estensione).C'è un modo che non è possibile utilizzare un autorelease pool, in quanto queste sono le uniche due cose che mai si tenta di utilizzarlo.Grazie.

O dovrei usare due NSTimers invece di un altro thread..?

Ben Gottlieb risposta era giusta, tuttavia ho deciso di utilizzare un altro NSTimer invece perché mi sono dimenticato di come la sua non è davvero sincronizzati al tempo di quando si dorme il thread, come l'effettiva esecuzione del codice prima ci vuole un po ' di tempo.E rende le cose simmetriche ;).

È stato utile?

Soluzione

Basta creare un autorelease pool nel metodo del thread:

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

...corpo del filetto...

[pool release];

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top