2011-06-26 7 views
6

Quelles sont les meilleures pratiques pour traiter UITableViews afin d'améliorer les performances, d'accélérer le développement et la maintenance lors de l'utilisation de UITableViews?UITableView Meilleures pratiques

+0

duplication possible de [Comment puis-je accélérer un UITableView?] (Http://stackoverflow.com/questions/6172158/how-can-i-speed-up-a-uitableview) – Caleb

Répondre

5

Ce n'est pas la première fois que cette question a été posée sur SO. Voici ma réponse précédente sur la question:

  • hauteur de la ligne dynamique est coûteuse, car elle ne peut pas mettre en cache les vues rendues efficacement, comme le moteur d'exécution ne sait pas quelle hauteur vous allez revenir pour une cellule donnée jusqu'à ce qu'il fait l'appel. Ne l'utilisez pas si possible. Les ingénieurs d'Apple m'ont dit qu'il est plus efficace de dessiner toutes les cellules un peu plus grandes que nécessaire pour tenir compte de quelques lignes plus grandes, plutôt que d'utiliser une hauteur dynamique.
  • Récupérer uniquement l'élément de tableau une fois [items objectAtIndex:indexPath.row] dans la méthode -tableView:cellForRowAtIndexPath:
  • Utilisez un cache pour toutes les images ou autres ressources réseau. Essayez le EGOImageView stack, il met en cache son image efficacement, et est un code assez lisse.
  • Pendant que vous êtes dans le code GitHub EGO, saisir leur EGOCache et l'utiliser pour mettre en cache tous les autres objets dont vous avez besoin pour manipuler, comme les chaînes qui sont analysées et modifiées
  • Si l'un de vos vues sur cette cellule sont transparentes , visionnez la vidéo de la WWDC 2011 sur les performances d'UIKit. Ils ont un beaucoup méthode plus efficace pour dessiner la transparence sur les cellules tableview
  • Si vous utilisez des données de base, utilisez le NSFetchedResultsController dans votre vue de table. Il gère les fautes de chargement, les index de mise en cache, et d'autres efficacités spécifiques aux tables ivews.

Regardez également la vidéo WWDC sur l'utilisation des instruments, ils vont sur la façon de trouver où le code de dessin est en train de tuer les performances. Cette année a eu quelques (certaines, pas toutes) de très bonnes sessions.

1

Optimisez le dernier, donc sous-classe UITableViewCell si vous avez besoin de cellules personnalisées - et si vous voulez un jour améliorer les performances de rendu, vous pouvez rendre le contenu en utilisant drawRect: à la place.

+0

Merci, mais ce n'est pas beaucoup Ce que tu as écris. – atiq

+1

Eh bien, il n'y a pas grand-chose à dire à moins d'avoir quelque chose de plus spécifique - à part ça, je crois que faire les choses comme ils écrivent dans la documentation officielle est probablement la meilleure pratique. –