2016-07-31 1 views
-1

J'ai créé une cellule de tableau de personnalisation dans laquelle je télécharge une image dans le fil d'arrière-plan dans la classe de cellule et maintenant je suppose que je suis passé au contrôleur précédent. Le thread d'arrière-plan continuerait-il à s'exécuter et bloquerait-il l'application? Je ne pouvais pas tester ce scénario car les images se chargeaient rapidement et n'avaient pas la chance de passer au contrôleur précédent.Fil d'arrière-plan à l'intérieur d'un UITableViewCell

Quelles seraient les conséquences?

+0

Afficher le code que vous utilisez. – Wain

+0

vous pouvez utiliser Paramètres> développeur> Network Link Conditioner> Réseau très mauvais pour tester sur réseau lent. et sur Mac aussi il y a un outil pour cela avec le nom "Network Link Conditioner" – hariszaman

+0

Comme le dit matte dans sa réponse, vous pouvez certainement écrire votre code pour gérer ce cas sans écraser. Testez-le vous-même (en utilisant la suggestion de @ hariszaman, si nécessaire) pour des plantages et rapportez-le. S'il plante, éditez votre question pour nous montrer votre code. –

Répondre

0

Des problèmes peuvent survenir si vous ne le faites pas correctement. Vous n'obtiendrez probablement pas de crash, car NSURLSession vous en empêche en conservant son délégué. Mais par la même occasion, le contrôleur de vue que vous avez laissé fuira; il ne disparaîtra pas, et les téléchargements et d'autres choses continueront à se produire.

Si est le faire correctement, tous les téléchargements doivent être annulés par vous lorsque le contrôleur de vue disparaît. Si vous n'avez pas besoin de ces téléchargements occupant la bande passante et le temps de processeur, vous avez le devoir d'appeler invalidateAndCancel pour que cela se produise. Notez que vous ne pouvez généralement pas le faire dans le deinit du contrôleur de vue, précisément en raison du cycle de conservation. Mais une fois que vous l'avez fait, votre contrôleur de vue sera en mesure de sortir de l'existence en bon ordre.

+0

remercie la réponse. Je posterai le code. Mais c'est ma question que je dois faire quelque chose pour annuler le téléchargement ou il annulera automatiquement quand je m'éloigne du contrôleur. – knowledgeseeker

+0

Et ma réponse est non ce ne sera pas. Désolé si ce n'était pas clair. C'est pourquoi vous avez reçu 'invalidateAndCancel'. – matt

+0

Élargi ma réponse. – matt