Problème de Fluidité avec NSTableView
dakuja
Membre
Bonjour à tous,
je me suis fait une petite application contenant une NSTableView et j'utilise une classe DataSource pour la remplir. Hélas, lorsque je dépasse un certain nombre d'entrée (à partir d'une trentaine), le défilement et le rafraà®chissement est relativement lent, et ça saccade par moment.
J'utilise un objet de type NSArray en tant que DataSource. Pour remplir chaque cellule, j'utilise simplement la commande
J'ai pas mal cherché sur le net et je n'ai pas réussi à trouver de tutorial expliquant comment optimiser plus finement une datasource pour une NSTableView. Est ce qu'il y a des choses à faire absolument ? D'autres à éviter ?
Si certains en ont le courage, je joint mon projet. La NSTableView est celle contenant les transactions (transactionTableView), l'objet contenant la liste des transactions affichées est l'objet transactions dans la classe Compte.
Il est possible que la structure du projet puisse vous faire bizarre, c'est mon second projet avec Xcode et Objective C alors ça ne doit pas être top.
je me suis fait une petite application contenant une NSTableView et j'utilise une classe DataSource pour la remplir. Hélas, lorsque je dépasse un certain nombre d'entrée (à partir d'une trentaine), le défilement et le rafraà®chissement est relativement lent, et ça saccade par moment.
J'utilise un objet de type NSArray en tant que DataSource. Pour remplir chaque cellule, j'utilise simplement la commande
[[maNSArray objectAtIndex:rowIndex] valueForKey:identifier]<br />
J'ai pas mal cherché sur le net et je n'ai pas réussi à trouver de tutorial expliquant comment optimiser plus finement une datasource pour une NSTableView. Est ce qu'il y a des choses à faire absolument ? D'autres à éviter ?
Si certains en ont le courage, je joint mon projet. La NSTableView est celle contenant les transactions (transactionTableView), l'objet contenant la liste des transactions affichées est l'objet transactions dans la classe Compte.
Il est possible que la structure du projet puisse vous faire bizarre, c'est mon second projet avec Xcode et Objective C alors ça ne doit pas être top.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il me semble que le plus facile pour optimiser est d'utiliser les bindings et un NSArrayController. Je dis ça parce que je n'ai encore jamais utilisé ta méthode dans mon apprentissage.
Sinon, logiquement, ton problème vient de ce que tu fais dans objectAtIndex:rowIndex->valueForKey, le temps que ça met est à multiplier par le nombre de lignes ..
D'ailleurs dans sa doc, quelque part, Apple dit que cette méthode doit être optimisée (je sais plus où)
et d'envoyer un "reloadData" au tableview pour faire la mise à jour.
J'ai utilisé cette méthode dans mon appli et cela paraà®t donner de bons résultats.
:P Mais... c'est mon appli, pas la tienne!!
Cela ne provient pas de l'utilisation traditionnelle du data source mais de ton code
Avec un exemple de datasource de 10000 lignes (une string + une image de 4 Ko par ligne) et une action qui transforme une cinquantaine de lignes :