Was passiert, wenn zwei ObjC-Kategorien dieselbe Methode überschreiben?
ch kenne einige Regeln bezüglich der Objective-C-Kategorie
Category-Methoden sollten vorhandene Methoden (Klasse oder Instanz) nicht überschreiben.Zweiander Kategorien, die dieselbe Methode für dieselbe Klasse implementieren, führen zu undefiniertem VerhaltenIch möchte wissen, was passiert, wenn ich eine meiner eigenen Kategoriemethoden in derselben Kategorie überschreibe. Beispielsweise
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
Wenn diese Schnittstellen definiert sind, welche Methode wird ausgeführt, wenn ich den folgenden Code ausführe?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
Hinweis: Bei meinem Compiler hat die MyClass-Implementierung Vorrang, aber ich bin mir nicht sicher, ob dies garantiert der Fall ist oder nur eine bestimmte Variante undefinierten Verhaltens.