NSWorkspace sharedWorkspace iconeForFile - Ultra couteux.... Y a mieux ?
LeChatNoir
Membre, Modérateur
Slt,
Tjs le nez dans mes optimisations, je constate que récupérer l'icone d'un fichier est couteux et limité.
* Couteux : à chaque fichier exploré, je fais un [[NSWorkspace sharedWorkspace] iconForFile:monfichier]. Ca rallonge sacrément mon listing => y a plus performant ?
* limité : ça ramène forcément l'icone en 32*32 donc obligé de resizer l'icone en 16*16 parce que je veux l'icone en 16*16. Y a mieux ?
Merci de vos lumières !
Tjs le nez dans mes optimisations, je constate que récupérer l'icone d'un fichier est couteux et limité.
* Couteux : à chaque fichier exploré, je fais un [[NSWorkspace sharedWorkspace] iconForFile:monfichier]. Ca rallonge sacrément mon listing => y a plus performant ?
* limité : ça ramène forcément l'icone en 32*32 donc obligé de resizer l'icone en 16*16 parce que je veux l'icone en 16*16. Y a mieux ?
Merci de vos lumières !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Autrement dit par défaut il prenne le iconForFileType, selon l'extension/type... et ils ne prennent le iconForFile (icône perso) que si tu le demandes.
Ce qui irait dans le sens de "oui c'est normal que ce soit long" et surtout "non y'a pas plus rapide", et du coup je serais toi je chercherai pas midi à 14h pour essayer d'optimiser cette récupération d'icône
Bon ok c'est peut-être un peu rapide comme conclusion, mais je suppose que si les clients FTP proposent ce genre d'option c'est que justement c'est long de récupérer l'icône personalisée pour chaque fichier... et que eux non plus n'ont pas trouvé plus rapide :P
Moi pour un affiché l'icône d'un download (en fonction de l'extension) j'utilise :
Et tu peux récupérer l'icone en différentes tailles (128*128 maxi, 32*32 par défaut).
@+
Louka
Bon ben je suis déçu :-(
Merci à tous de vos conseils, je vais voir ce que je fais...
a+
A y réfléchir, le finder le fait bien lui ?!
Il affiche bien les fichiers rapidements avec les icones associés.
Donc il doit bien y avoir moyen non ?
Cache+thread, je devrais m'en tirer.
Par contre, ca va être long :-( Mon client FTP n'est pas prêt de voir le jour !
J'ai même pas encore touché à un cheveux du protocole FTP !!!
Merci !
Le gars qui a fait UKDirectoryEnumerator (équivament à DirectoryEnumerator Cocoa mais en Carbon donc sensé être plus performant) m'a filé du code sur lequel il bosse et qui utilise les icon services.
Je vais donc gratter dans ce sens et tenté de mettre une sorte de cache.
Et je vais arrêter là l'optimisation. Je vais tenter de me concentrer enfin sur le coeur du client FTP : le protocol FTP :P
a+
Moi je suis le gas qui fait piquantmenu
Bon moi je suis le gars qui est une bille en Carbon alors j'ai fait un :)beta: copier/coller de ton code et bien sur, le compilo m'a gueulé dessus.
Donc j'ai vaguement chercher et voilà ce que j'ai tenté :
Ca compile et ca marche sur les premiers nodes de la racine, à savoir /Applications, /Network etc mais paf, le PlotMachinChose se vautre sur le node /sw.
Pourquoi, j'en sais rien...
Un autre ch'tit coup de main :-* ?
Et remplacer &labelColor et &theLabelIcon par NULL.
Note que l'image n'est pas "releasée" si tu ne le fais pas.
Pour le rect je sais plus mais à mon avis si il y est ce que ça doit plus marcher sans.
Mon exemple n'est pas forcément parfait alors n'hésites pas à l'améliorer (et le signaler)
Chez moi ça marche sur tous les fichiers "normaux" ? C'est quoi /sw ?
Je testerai ça plus tard (je peux pas là ...).
J'avais pas pigé que c'était pour les étiquettes !
/sw, c'est tout ce qui est packages fink je crois. C'est un dossier plutot normal et sur lequel il n'y a a priori pas de pb de droits.
Je te tiens au courant plus tard.
a+