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 Verhalten

Ich 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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage