Question

J'utilise actuellement avec plusieurs NSURLConnection de manière asynchrone UIViews (toutes les vues poignées NSURLConnection en tant que délégué). Le problème, c'est lorsque l'utilisateur passe vues trop vite et le délégué devient NSZombie les accidents d'application - qui est NSURLConnection ne pas vivre plus délégué. Donc, la première question est de savoir s'il y a un moyen de contourner cela?

La deuxième question est simple - comment puis-je gérer NSZombie? Simple if(myObject != nil).. ne fonctionne pas du tout.

Était-ce utile?

La solution

Vous devez annuler la NSURLConnection avant de disposer délégué de lui. Il suffit de garder une référence à la NSURLConnection dans votre UIView qui agit en tant que délégué et appel [urlConnection cancel].

Une fois que vous relâchez un message que vous devez définir votre pointeur à zéro si vous continuez à utiliser ce pointeur. A titre d'exemple:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

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

Notez cependant qu'il est valide pour envoyer un message à nil de sorte que vous n'avez pas besoin de garde en toute sécurité le message d'envoi. Il aura tout simplement pas avoir d'effet si myObject == nil.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top