Est-il possible de découvrir à l'exécution quelles sous-classes existent d'une classe donnée?Découvrez les sous-classes d'une classe donnée dans Obj-C
Editer: Depuis les réponses jusqu'à présent, je pense que je dois clarifier un peu plus ce que je suis en train de faire. Je suis conscient que ce n'est pas une pratique courante dans le cacao, et que cela peut comporter quelques réserves.
J'écris un analyseur en utilisant le modèle de création dynamique. (Voir le livre Cocoa Design Patterns de Buck et Yacktman, chapitre 5.) Fondamentalement, l'instance de l'analyseur traite une pile et instancie des objets qui savent comment effectuer certains calculs.
Si je peux obtenir toutes les sous-classes de la classe MYCommand
, je peux, par exemple, fournir à l'utilisateur une liste de commandes disponibles. De plus, dans l'exemple du chapitre 5, l'analyseur a un dictionnaire de substitution, ce qui permet d'utiliser des opérateurs comme +, -, * et /. (Ils sont mappés à MYAddCommand
, etc.) Pour moi, il semblait que cette information appartenait à la sous-classe MyCommand
, pas l'instance de l'analyseur, car elle va un peu à l'encontre de l'idée de création dynamique.
Cela ressemble à la bonne façon d'aller en effet. D'autant plus que la documentation mentionne que la méthode '+ load' d'une classe est appelée après toutes ses méthodes '+ load'. Un grand merci aux autres personnes qui ont fourni des réponses, mais leurs réponses étaient également excellentes. –
Les sous-classes de MyCommand n'appellent pas + load sur leur superclasse. + load n'est appelé que dans les classes qui l'implémentent. –
Surprise il a fallu si longtemps pour que quelqu'un me corrige! Je suis généralement d'accord avec les réponses ici que l'enregistrement automatique est une mauvaise idée et devrait être traitée un peu plus manuellement à la place. –