2009-05-19 8 views

Répondre

1

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.

+0

Bonjour Barry, je suis curieux de voir comment cela peut être fait à des fins éducatives plutôt que pratiques. Une idée comment? – Boon

+0

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. –

Questions connexes