En Objective-C, il y a la métaphore Alloc/Init. Ils ont également ajouté une méthode de partage commune appelée «nouveau» qui appelle en interne les deux à la fois. Et si je crée une sous-classe de NSObject appelée FooClass, FooClass récupère ces méthodes partagées, y compris 'new'.Récupère le type de classe dans la méthode objective-c partagée?
MAIS ... comment diable est-ce mis en œuvre ??
Il ne peut pas simplement déléguer à la classe de base, car cela ne ferait qu'instancier une instance de NSObject, pas votre classe dérivée FooClass, mais cela fonctionne toujours! Alors, comment quelqu'un pourrait-il écrire quelque chose de similaire?
En d'autres termes, la classe de base ne doit pas être ça ...
+ (id) somethingLikeNew{
return [[NSObject alloc] init];
}
Mais plutôt ce ...
+ (id) somethingLikeNew{
return [[<SomethingThatMapsToFooClassType> alloc] init];
}
... où 'SomethingThatMapsToFooClassType' est le type de la classe dérivée qui hérite de NSObject et qui a besoin de récupérer la méthode partagée 'somethingLikeNew'. Fondamentalement, j'ajoute une catégorie hors de NSObject et j'ai des méthodes partagées qui doivent connaître le type, mais les implémentations sont toutes génériques, donc aller dans une catégorie sur NSObject et pas partout dans mes fichiers de classe (De la même façon que vous n'avez pas de «nouveau» partout, c'est juste là.)
Quelqu'un? Bueller? Bueller?
M
Lol ... Je suppose que nous avons publié en même temps. Je viens de dire ça moi-même! – MarqueIV
Il est toujours préférable de trouver la réponse vous-même. Bon travail. –