NSTokenField
colas_
Membre
Bonjour,
J'ai sous-classé NSTokenField. Mes instances sont créées via IB.
J'ai overwrité la méthode
+ (NSCharacterSet *)defaultTokenizingCharacterSet
Bizarrement, elle n'est jamais appelée.
Je pense que c'est un bug...
Colas
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Tu dois l'appeler toi même non ?
@Joanna Finalement, oui, Joanna, j'ai overridé `init` et `initWithCoder:`
@samir Je pensais qu'en overiddant `+ defaultTokenizingCharacterSet`, à l'init il prendrait automatiquement cet ensemble.
@Joanna : pourquoi overrider pas overwritter ?
C'était nécessaire ?
Parce que le mot-clé est override ? Je crois que c'est plus correct d'utiliser surcharger, mais l'informatique est plein d'anglicismes
@Joanna, je ne sais pas si c'était nécessaire, mais c'est la solution que j'ai choisie. A priori moins casse-gueule (si éventuels KVO).
Pour overrider vs. overwrite, je trouvais que le sens de overwriter correspondait bien à l'idée de réécrire la méthode.
Mais qu'est-ce que as mis les dedans ?
Overwriter peut signifier plutôt remplacer, alors qu'une méthode override peut appeler sa version super.
@Joanna
Pour aucune raison particulière. Mais ta solution est plus "sioux" donc plus dangereuse. Imagine qu'il y ait un KVO sur NSTokenField du genre : si le KVO n'a pas été appelé, alors je ne regarde même pas le `- tokenizingCharacterSet` et je prends direct le `+defaultTokenizingSet` !!! Avec ta façon de faire, le KVO ne sera jamais déclenché, et donc sa valeur ne sera pas appelée.
(Bon, c'est un cas complètement improbable ce que je dis, mais on pourrait imaginer que le KVO soit appelé pour autre chose. Bon, comme la valeur est donnée dès l'init, ça ne changerait rien non plus... mais bon)
ANALOGIE :
De même, si tu sous-classes UIView en JoannaView et que toutes tes JoannaView sont de couleur redColor, comment feras-tu ?
- changeras-tu `backgroundColor` à l'init pour le mettre à rouge ?
- ou bien, tu vas overrider `- backgroundColor` du genre
TLDR :
Pour résumer, ta solution est "witty", maline, donc oui on a envie de l'utiliser. Mais je préfère faire plus pédestre, simple et bête, mais plus sûr. Dans ce cas, je pense que ta solution ne pose pas de problème. Voilà mon point de vue.
Je serais curieux d'avoir les points de vue d'autres contributeurs. Merci !