Pregunta

Actualmente estoy usando de forma asíncrona con varios NSURLConnection UIViews (todas las referencias de vista NSURLConnection como delegado). El problema que tengo es cuando el usuario cambia vistas demasiado rápido y el delegado se convierte en NSZombie la aplicación se bloquea - que es NSURLConnection no tiene delegado vivir más. Así, la primera pregunta es si hay una manera de evitar esto?

La segunda pregunta es simple - ¿Cómo manejo NSZombie? if(myObject != nil).. sencilla no funciona en absoluto.

¿Fue útil?

Solución

Es necesario cancelar la NSURLConnection antes de deshacerse de él delegado. Basta con mantener una referencia a la NSURLConnection en su UIView que actúa como delegado y [urlConnection cancel] llamada.

Después de soltar un mensaje tiene que establecer el puntero a ella a cero si continúa utilizando ese puntero. Como un ejemplo:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

if (myObject != nil) {
   [myObject doSomething];
}

Aviso sin embargo, que es válida para enviar un mensaje a nil por lo que no es necesario para salvaguardar el envío de mensajes. Simplemente, no tendrá ningún efecto si myObject == nil.

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