Frage

Ich bin derzeit asynchron NSURLConnection mit mehreren UIViews (Jede Ansicht verhandelt NSURLConnection als Delegierter). Das Problem, das ich habe, ist, wenn der Benutzer die Ansichten zu schnell wechselt und der Delegierte wird NSZombie Die App stürzt ab - das ist nsurlConnection hat keinen lebenden Delegierten mehr. Die erste Frage ist also, ob es eine Möglichkeit gibt, dies zu umgehen.

Die zweite Frage ist einfach - wie gehe ich mit Nszombie um? Einfach if(myObject != nil).. funktioniert überhaupt nicht.

War es hilfreich?

Lösung

Du musst Abbrechen das NSURLConnection Bevor Sie es entsorgen, ist es Delegierter. Halten Sie einfach einen Hinweis auf die NsurlConnection in Ihrem UIView Das wirkt als Delegierter und Anruf [urlConnection cancel].

Nachdem Sie eine Nachricht veröffentlicht haben, müssen Sie Ihren Zeiger auf NIL einstellen, wenn Sie diesen Zeiger weiterhin verwenden. Als Beispiel:

id myObject = [[SomeObject alloc] init];

/* Some code */

[myObject release];
myObject = nil;

/* Some more code */

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

Beachten Sie jedoch, dass es gültig ist, eine Nachricht an zu senden nil Sie müssen also die Senden der Nachricht nicht sicher schützen. Es hat einfach keinen Einfluss, wenn myObject == nil.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top