Je connais un couple de règles concernant les catégories Objective-C:Que se passe-t-il si deux catégories ObjC remplacent la même méthode?
- méthodes de catégorie ne devrait pas surcharger les méthodes existantes (classe ou d'instance)
- Deux différentes catégories d'application de la même méthode pour la même classe se traduira par un comportement non défini
Je voudrais savoir ce qui se passe quand j'Override un de mes propres méthodes de catégorie en t la même catégorie. Par exemple:
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
Avec ces interfaces définies, quelle méthode sera exécutée lorsque j'exécuter le code suivant?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
Note: Avec mon compilateur, la mise en œuvre de MyClass a la priorité, mais je ne suis pas sûr si cela est garanti de se produire, ou tout simplement une saveur spécifique du comportement non défini.
Est-il correct de surcharger dans la méthode Catégorie déclarée et implémentée dans Catégorie de super classe? – BergP