J'ai un utableview. Chaque ligne est un objet lourd avec des vidéos, des images, etc. Lorsque l'utilisateur fait défiler cette vue, comment puis-je relâcher la mémoire des lignes non visibles et charger les lignes visibles actuelles? P>
4 Réponses :
Recyclageez-vous UitailViewCells selon les recommandations d'Apple? Sinon, vous devez lire les documents d'Apple. À l'intérieur du Cellfornrowindexpath: Délégué Vous devriez avoir quelque chose [CustomCell SetMeMediAbjects:]. Dans votre classe CustomCell, vous pouvez libérer toutes les médias précédentes de la mémoire. p>
un regard plus proche des cellules de la table - Apple Documentation P>
Lorsque vous appelez DEQUUEREAUSABLECELLEDIdentificateur d'abord 10 (on peut afficher juste dix cellules à l'écran à un instant) Les cellules seront créées, elles seront alors chargées et configurées pour montrer. Ainsi, les cellules ne sont pas libérées. P>
Je suppose que vous parlez de la mémoire de mémoire utilisée par les images et les vidéos de votre rangée, et non la ligne elle-même.
Dans votre délégué de la tableView, P>
[myTableView indexPathsForVisibleRows]
Comme d'autres l'ont dit, vous devez vous assurer de recycler les cellules correctement et ne détruisez pas de choses que vous auriez besoin de recréer de toute façon lorsque la cellule est réutilisée. P>
Mais, vous voudrez peut-être libérer d'autres actifs que la cellule ou ses points de vue conservent. Ou si cette cellule possède des demandes de téléchargement en attente, par exemple, vous pouvez réinitialiser leur priorité ou même les annuler lorsque la cellule est décalée. P>
Je pense que le moyen le plus propre de faire est de remplacer simplement Ceci est appelé lorsque la cellule est remise dans la file d'attente de réutilisation. Si l'utilisateur se déplace rapidement dans la table, vous ne voulez pas nettoyer la cellule du moment où la cellule est éteinte de l'écran (en regardant IndexPathsforvisiblers, par exemple). p>
Mais lorsque la cellule est réellement remise dans la file d'attente de la réutilisation, c'est un bon moment pour faire ce travail car vous savez que la cellule n'apparaîtra plus à l'écran jusqu'à ce que vous ne puissiez à nouveau. P> - [utailviewcell préparerforruse] code> p>
Utilisez des cellules réutilisables et oubliez la manutention de la mémoire (laissez-la au système)