Catégories Objective-C
-
18-09-2019 - |
Question
Si j'ajoute une méthode de catégorie à une classe, comme NSXMLNode:
@interface NSXMLNode (mycat)
- (void)myFunc;
@end
cette méthode de catégorie sera également disponible dans les sous-classes de NSXMLNode, comme NSXMLElement et NSXMLDocument? Ou dois-je définir et mettre en œuvre la méthode comme une catégorie dans chaque classe, conduisant à coder la duplication?
La solution
Il est disponible dans les sous-classes!
Autres conseils
Il sera disponible dans les sous-classes comme l'a dit Yuji.
Cependant, vous devez préfixer votre méthode telle qu'il n'y a pas de risque qu'il est en conflit avec toute méthode, public ou privé.
i.e..
-(void) mycat_myMethod;
Oui il sera disponible, je pensais de vérifier par code et voici:
#import <Foundation/Foundation.h>
@interface Cat1 : NSObject {
}
@end
@implementation Cat1
- (void) simpleMethod
{
NSLog(@"Simple Method");
}
@end
@interface Cat1 (Cat2)
- (void) addingMoreMethods;
@end
@implementation Cat1 (Cat2)
- (void) addingMoreMethods
{
NSLog(@"Another Method");
}
@end
@interface MYClass : Cat1
@end
@implementation MYClass
@end
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
MYClass *myclass = [[MYClass alloc] init];
[myclass addingMoreMethods];
[myclass release];
[pool drain];
return 0;
}
La sortie est la suivante:
Another Method
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow