Pregunta

Tengo una sencilla aplicación que cuenta atrás hasta la medianoche y luego juega un pitido suena una y otra vez y parpadea la etiqueta que muestra el tiempo. Por lo que el parpadeo etiqueta utiliza una NSTimer, mientras que el pitido va en su propio hilo, por lo que la función C pura (para el sistema de sonido Identificación de devolución de llamada terminación) se puede utilizar [NSThread sleepForTimeInterval: ...]; que esperar un poco en el medio de reproducir el sonido de alarma pitido. Por lo que obtener dos mensajes de error durante la ejecución diciendo theres no hay piscina autorelease y que sólo se escapará. Su porque en el método que llamo en un nuevo tema, hay dos @ "cadenas" que se utilizan para crear el ID de sonido del sistema (el nombre de archivo y extensión). ¿Hay alguna manera no puedo usar una piscina autorelease ya que son las únicas dos cosas que siempre tratan de usarlo. Gracias.

O debería usar dos NSTimers en lugar de otro hilo ..?

respuesta

de Ben Gottlieb tenía razón, sin embargo, decidí utilizar otra NSTimer lugar porque me olvidé de cómo no es realmente sincronizado con el tiempo cuando se duerme el hilo como la ejecución real del código antes de que se necesita un poco de tiempo. Y hace cosas simétrica;).

¿Fue útil?

Solución

Hay que crear una piscina autorelease en su método de hilo:

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

...thread body...

[pool release];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top