iOS prüfen Sie, ob Stellvertretung vorhanden ist, vor Aufruf der Methode
Ich Schreibe iOS-app und verwenden Sie imageStore Bibliothek zu faul laden von Bildern und cache in den Speicher. (https://github.com/psychs/imagestore)
Auf ViewController ich erstellen imagestore Beispiel:
imageStore = [ImageStore new];
imageStore.delegate = self;
Wenn Bild geladen, erfolgreich, imagestore call delegate-Methode
- (void)imageStoreDidGetNewImage:(ImageStore*)sender url:(NSString*)url
tun reloadData auf tableview neu Zellen.
Alles funktioniert gut. Aber es ist das problem: wenn ViewController didUnload (gehen Sie zurück in den navigation-controller) und das Bild geladen, Anwendung beenden, die mit crash, weil imagestore call-Methode der entladen ViewController.
Ich versuche Folgendes:
1) im ViewController lege ich diesen code in viewDidUnload Abschnitt:
imageStore.delegate = nil;
imageStore = nil;
2) In imageStore Hinzugefügt habe ich die Prüfung für null:
if(delegate != nil) {
...call delegate method
}
Funktioniert es, aber in regelmäßigen Abständen app-crash sowieso.
2)
ist unneedful. Mitteilung gesendet werden können, sicher zunil
Objekt.- Vielen Dank für die Antwort! aber ohne Absturz, 100% (wenn Bild geladen und viewcontroller entladen...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, indem Sie diesen code auf dealloc Abschnitt.
In der gleichen Weise die wenn-Klausel ist nicht notwendig, da jeder Aufruf einen null-Objekt wird ignoriert von der Anwendung, also wenn Sie so etwas wie dieses:
hat keine Wirkung in Ihrer Anwendung Verhalten, in der anderen hand, wenn der Aufruf der Methode delegieren ist optional, sollten Sie asure, dass Delegierte reagiert auf Selektor, so etwas sollte den trick tun:
Prost!
Das ist ein Widerspruch. Es gibt zwei Möglichkeiten:
Ihr fix gearbeitet, und die app stürzt aus irgendeinem anderen Grund.
Dein Update nicht funktioniert hat, die app weiterhin Abstürzen, aus dem gleichen Grund war es Absturz vor.
Ist es schwer zu wissen, was falsch ist, ohne zu wissen, welche dieser beiden Möglichkeiten ist in der Tat passiert. Blick auf die Fehlermeldung und die Beweise von dem Unfall, wie der Stapel kriechen. Warum ist die app abstürzt? Macht es zu versuchen, zu dereferenzieren der
delegate
Eigentum irgendwo, ohne zuerst überprüfen? Kommt es auf die Delegierten etwas zu tun, so dass, wenn der Stellvertreter nicht mehr vorhanden, die Sache nicht erledigen-und das wiederum führt zu einem Absturz? Dies sind die Arten von Dinge, die ich suchen, aber wieder das wichtigste ist zu beginnen, mit der Beweise, die Sie haben, und Folgen Sie Ihrer Nase.