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?

Était-ce utile?

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
scroll top