Pregunta

EDIT: me quedé en una sola llamada para retener manualmente la matriz justo después de inicializarlo, y que lo arreglaron. Dur. Gracias.

guardo un NSMutableArray en una subclase UIScrollView, y añadir a la misma instancias de una subclase UIImageView ya que cada se añade como una subvista. Tiene que ser una matriz mutable, ya que tengo pensado cambiar su orden en la matriz con el tiempo; Este error se produce antes de que yo trato de hacerlo. He usado NSLogs para demostrar que la matriz tiene recuento de 10 hasta e incluyendo applicationDidBecomeActive: se llama en mi AppDelegate, y añadió un temporizador para disparar cada 0,001 s en el bucle de ejecución. La primera vez que se dispara, no puede encontrar la variedad más! Estoy muy confundido y he estado tratando de realizar un seguimiento de esto abajo durante horas.

El temporizador funciona correctamente (es decir, cuando PrintCount: no tiene acceso a la matriz, que está bien), es sólo cuando intento acceder a la matriz que no se rompe. La llamada regular a PrintCount: a continuación funciona, pero la primera vez que se activa el temporizador I lo que podría estar sucediendo entre estas dos llamadas a PrintCount:?

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSTimer *timer = [[NSTimer scheduledTimerWithTimeInterval:0.001f
                                                       target:[viewController view]
                                                     selector:@selector(printCount)
                                                     userInfo:nil
                                                      repeats:YES]
                      retain];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
    [[viewController view] printCount];
}

He estado sin fin paso a paso por el programa con el depurador. La matriz es correcta la derecha a través de este punto, y su dirección de memoria es el mismo, incluso después de su contenido se cambian. Sin embargo, sólo hay objeto en ella después - sus 10 elementos son reemplazados por una sola instancia UITouchData. Ni idea de dónde viene. Ninguno de mis métodos de control de eventos intento de reasignar la matriz o cambiarlo. Alguna idea de lo podría ir mal? Estoy completamente desconcertado.

¿Fue útil?

Solución

¿Se -retain la matriz?

Otros consejos

Tal vez fue liberado de su objeto? ¿Qué pasa si no conserva la misma. Hace ese trabajo o que acaba de obtener una pérdida de memoria?

  

sus 10 elementos son reemplazados por una   instancia única UITouchData. Ni idea   de dónde viene.

¿Es siempre una instancia UITouchData? ¿Siempre? -. Causa que parecería como un obsequio muertos (si no es lo mismo tiempo cada) de un problema de memoria

Me atrapado en una llamada para retener a la matriz inmediatamente después de la inicialización de él, y que lo arreglaron. Dur.

Gracias por las sugerencias. Como suele ocurrir con problemas como estos, que era muy simple y, finalmente ceder y pedir ayuda desencadena una solución y me hace sentir estúpida. : D

¿La vista inicializar y liberar la matriz?
¿Está seguro de que el NSView no se libera en el medio?
Podrías comprobar si la dirección de memoria de [viewController view] (== yo dentro printCount) es el mismo cada vez que el temporizador llama printCount.

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