2010-08-09 1 views
0

Je travaille sur une vue de la table qui affiche tout d'un certain type d'objet géré, et je me demande si je devrais faire quelque chose pour empêcher les défauts de tirer tout le temps lorsque l'utilisateur fait défiler et je mis en place un nouvelle cellule dans la source de données? Je ne connais pas trop les détails sur les grandes quantités d'objets gérés, (plusieurs centaines) mais je comprends que le déclenchement d'une panne est coûteux en ressources, et si chaque fois qu'une cellule apparaît, je demande un objet géré pour un de ses propriétés, devrais-je faire un nouveau tableau séparé dans viewDidLoad avec toutes les informations nécessaires pour afficher une cellule de vue de table, empêchant ainsi les failles répétées des objets gérés?Qu'est-ce qu'un moyen efficace d'afficher un grand nombre de NSManagedObjects dans une vue de table sans trop de ressources?

Merci pour toute aide avec ceci.

+0

Que dites-vous va causer des défauts? Est-ce que vous chargez à nouveau l'objet chaque fois que vous en avez besoin? Vous n'en avez pas déjà un tableau ou quelque chose? – jtbandes

Répondre

2

Il y a une raison pour laquelle que les documents d'introduction pour les données fondamentales ne passent pas de temps sur la gestion de la mémoire. Core Data est très efficace dans l'utilisation de la mémoire et le gère automatiquement. Si votre application rencontre une mémoire insuffisante, les données de base convertiront les objets actifs en défauts s'ils ne sont pas activement utilisés.

Dans le cas des tableaux, si vous utilisez un contrôleur de résultats récupérés, vous ne serez pas charger dans tous les objets gérés d'un seul coup, mais seulement ceux dont vous attribue directement accès. Par exemple, supposons que vous utilisiez une table indexée avec des milliers d'objets alphabétisés. Lors du premier chargement de la table, seuls les 10 objets gérés nécessaires pour remplir les cellules visibles sont en mémoire. Si vous utilisez simplement l'index "Z", seuls les objets gérés nécessaires pour afficher les quelques cellules affichées à la fois sous "Z" sont chargés en mémoire. Même si vous faites défiler une table non indexée, votre utilisation de la mémoire est faible car la table sait demander des cellules uniquement pour les lignes réellement lisibles.

L'optimisation prématurée est la source de tous les maux de programmation. Ne perdez pas de temps et ajoutez de la complexité en essayant d'éviter les problèmes que vous pourriez ne jamais avoir.

Dans le cas particulier des données de base, il gère 95% de toutes les fournitures de mémoire pour vous. C'est l'un de ses principaux avantages. Je fais rarement attention à l'utilisation de la mémoire de Core Data.

Au lieu de cela, commencez par l'implémentation la plus simple. Vous ne devriez pas vous soucier de l'utilisation de la mémoire jusqu'à ce que vous avez testé et trouvé un problème.

+0

Je ne suis pas d'accord avec cette réponse plus. –

+0

Cela explique, j'ai vraiment été bloqué pour info sur la gestion de la mémoire sur les données de base, merci pour le conseil. –

Questions connexes