2016-07-31 10 views
-1

Ich habe eine benutzerdefinierte Tabelle Zelle, in der ich Bild im Hintergrund Thread in Zelle Klasse herunterladen und nun angenommen, dass ich zum vorherigen View-Controller verschoben. Würde der Hintergrund-Thread weiterhin ausgeführt werden und die Anwendung zum Absturz bringen? Ich könnte dieses Szenario nicht testen, da Bilder schnell geladen werden und keine Chance erhalten, zum vorherigen Ansichtscontroller zu wechseln.Hintergrund Thread in einem UITableViewCell

Was wären die Konsequenzen?

+0

Zeigen Sie den Code an, den Sie verwenden. – Wain

+0

Sie können Einstellungen> Entwickler> Network Link Conditioner> Sehr schlecht Netzwerk zum Testen auf langsamen Netzwerk verwenden. und auf dem Mac gibt es auch ein Tool mit dem Namen "Network Link Conditioner" – hariszaman

+0

Wie Matt in seiner Antwort sagt, können Sie sicherlich Ihren Code schreiben, um diesen Fall ohne Absturz zu behandeln. Teste es selbst (mit Hilfe von @ hariszamans Vorschlag, falls nötig) für Abstürze und melde dich zurück. Wenn es abstürzt, redigieren Sie Ihre Frage, um uns Ihren Code zu zeigen. –

Antwort

0

Probleme können durchaus auftreten, wenn Sie das nicht richtig machen. Sie werden wahrscheinlich keinen Absturz bekommen, weil die NSURLSession das für Sie verhindert, indem Sie ihren Delegierten behalten. Aus demselben Grund wird der View-Controller, den Sie verlassen haben, undicht; Es wird nicht mehr existieren und die Downloads und andere Dinge werden weiterhin passieren.

Wenn Sie sind es richtig zu tun, sollten alle Downloads von Ihnen abgebrochen werden, wenn der View-Controller nicht mehr existiert. Wenn Sie diese Downloads nicht benötigen, die Bandbreite und CPU-Zeit belegen, müssen Sie invalidateAndCancel aufrufen, um dies zu ermöglichen. Beachten Sie, dass Sie dies in der Regel nicht im deinit des View-Controllers ausführen können, und zwar wegen des Retain-Zyklus. Aber sobald Sie es getan haben, wird Ihr View-Controller in der Lage sein, in einer guten Ordnung zu existieren.

+0

danke die Antwort. Ich poste den Code. Aber das ist meine Frage muss ich etwas tun, um den Download abzubrechen oder es wird automatisch abgebrochen, wenn ich weg von der Steuerung. – knowledgeseeker

+0

Und meine Antwort ist nein, es wird nicht. Tut mir leid, wenn das nicht klar war. Aus diesem Grund haben Sie "invalidateAndCancel" erhalten. – matt

+0

Erweitete meine Antwort. – matt

Verwandte Themen