Je sais que les catégories ne doivent pas être utilisées pour surcharger une méthode de la classe qu'elles étendent. Cependant, qu'en est-il du scénario suivant.
Considérez les classes :
Base.h
#import <Foundation/NSObject.h>
@interface Base: NSObject { NSNumber *n; }
@end
Derived.h
#import "Base.h"
@interface Derived: Base { NSString *s; }
@end
Avec des catégories :
Base+Serialize.h
#import "Base.h"
@interface Base (Serialize)
- (NSString*)serialize;
@end
Base+Serialize.m
#import "Base+Serialize.h"
@implementation Base (Serialize)
- (NSString*)serialize
{
return [NSString stringWithFormat:@"%@", n];
}
@end
Dérivé+Serialize.h
#import "Derived.h"
#import "Base+Serialize.h"
@interface Derived (Serialize)
- (NSString*)serialize;
@end
Dérivé+Serialize.m
#import "Derived+Serialize.h"
@implementation Derived (Serialize)
- (NSString*)serialize
{
return [NSString stringWithFormat:@"%@, %@", s, [super serialize]];
}
@end
Il s'agit évidemment d'un exemple artificiel/simplifié. Mais il fonctionne bien pour démontrer ce que je voudrais faire. Essentiellement, je veux fournir une fonctionnalité supplémentaire à plusieurs classes dans une hiérarchie d'héritage.
S'agit-il d'une utilisation sûre/valide des catégories ? Des problèmes ?