Disons que j'ai une méthode qui prend une classe, qui est appelé comme ceci:Comment interroger une classe de manière sécurisée?
[registry registerClass:[MyClass class]];
Comment puis-je interroger la classe à l'intérieur -registerClass:
?
-(void) registerClass:(Class)typeClass {
// Verify that instances of typeClass confirm to protocol/respondsToSelector
// ?
// Do stuff
// ...
[myListOfClasses addObject:typeClass];
// ...
}
C'est le "?" Je me demande à propos de. Puis-je en toute sécurité (et toujours) diffuser Class foo
en NSObject *fooObj
et lui envoyer des messages, en supposant que foo sera toujours une sous-classe de NSObject? Y a-t-il une métaclasse racine dont toutes les métaclasses NSObject héritent? Ou tous les objets Class sont-ils simplement des instances d'une seule métaclasse?
Merci pour cette info, savez-vous où je peux trouver une référence de cours? J'ai récuré le net en essayant de trouver de la documentation - et les documents de référence d'Apple ne sont pas vraiment utiles par rapport à quelque chose de plus navigable comme JavaDoc. – Sophistifunk
Le manuel Apple Objective C parle un peu de la façon dont les classes sont des objets mais pas de manière très détaillée, http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ObjC.pdf. Beaucoup de méthodes de classe dans NSObject devraient pouvoir être appelées mais seulement certaines ont du sens. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html. Sinon, je n'ai pas encore trouvé un bon synopsis sur la façon d'interagir avec un objet Class. –
Cette discussion est intéressante mais elle est aussi un peu abstraite, http://cocoawithlove.com/2010/01/what-is-meta-class-in-objective-c.html. –