Je veux dynamiquement sous-classer une classe (disons NSString) et instancier cette sous-classe à des fins de test. Comment puis-je faire cela en Objective C?Comment dynamiquement sous-classer une classe et activer la sous-classe dans Objective C?
Répondre
Je soupçonne que vous n'avez pas besoin de faire ce que vous cherchez à faire, mais sans plus de détails, il est impossible de savoir à coup sûr. Parce que Objective-C est un langage lié tardivement, le sous-classement à des fins de test est rarement nécessaire. Au lieu de cela, jetez un oeil à class categories ou envisager une refonte de sorte que vous pouvez passer un test double (talon, faux ou faux) via un paramètre de type id
ou conforme à un protocole.
Pour l'intérêt, vous pouvez utiliser objc_allocateClassPair(Class superclass, const char *name, size_t extraBytes)
pour allouer une nouvelle classe. Vous pouvez ajouter des méthodes en utilisant class_addMethod(Class cls, SEL name, IMP imp, const char *types)
et ivars avec class_addIvar(Class cls, const char *name, size_t size, uint8_t alignment, const char *types)
. Enfin, vous devez enregistrer la nouvelle classe en utilisant objc_registerClassPair(Class cls)
. Pour en savoir plus, consultez le Objective-C 2.0 Runtime Reference. Si je trouve le temps, je vais tester du code et le poster ici.
- 1. Instancier une classe arbitraire dans Objective C
- 2. Erreurs d'initialisation de la classe Objective C
- 3. Comment créer une méthode de classe allocator en Objective-C?
- 4. Des classes dynamiquement instables en Objective-C, possibles?
- 5. Retard de temps de classe Objective-C?
- 6. Objective-c et Xcode
- 7. Interopérabilité Objective-C et C
- 8. désactiver/activer Dynamiquement articles CheckBoxList
- 9. Création de classe dynamique en Objective-C
- 10. Objective C Static Classe Variables de niveau
- 11. Classe de racines correcte pour Objective C?
- 12. Pourquoi SEL n'est-il pas une classe en Objective-C?
- 13. Créer une instance de classe objective-c par son nom?
- 14. Comment activer une minuterie à partir d'un autre fil/classe
- 15. Tableaux dans Objective-C
- 16. Sous-classe Objective C qui remplace une méthode dans la superclasse
- 17. Comment définir une valeur non initialisée dans Objective C?
- 18. Classes C++ comme variables d'instance d'une classe Objective-C
- 19. Comment projeter un objet dans Objective-C
- 20. Objective C interfaces, délégués, et protocoles
- 21. Comment appeler les méthodes + class dans Objective C sans faire référence à la classe?
- 22. Organisation en Objective-C et Xcode
- 23. Instancier une classe dynamiquement via une variable
- 24. Objective-C: Comment créer une classe avec un tableau 2d C en tant que champ?
- 25. activer lightbox sur le contenu ajouté dynamiquement
- 26. Y compris le type Objective C++ dans la définition de classe C++
- 27. Énumération descendante dans Objective-C
- 28. Invoquer une méthode Objective-C par nom
- 29. Comment créer une variable d'instance dans Objective-C
- 30. Valeurs dynamiques de saisie et de retour dans Objective-C
Bonjour Barry, je suis curieux de voir comment cela peut être fait à des fins éducatives plutôt que pratiques. Une idée comment? – Boon
Oui, j'ai ajouté une feuille de route pour le faire en utilisant le runtime Objective-C 2.0. Si j'ai le temps, je vais écrire/tester du code et le poster aussi. –