Что произойдет, если две категории ObjC переопределят один и тот же метод?

Я знаю пару правил, касающихся категорий Objective-C:

Методы категории не должны переопределять существующие методы (класс или экземпляр)Дваразные категории, реализующие один и тот же метод для одного и того же класса, приведут к неопределенному поведению

Я хотел бы знать, что происходит, когда я переопределяю один из моих собственных методов категории в той же категории. Например:

@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end

@interface MyClass : NSView
{ }
@end

@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end

С этими интерфейсами, какой метод будет выполняться, когда я запусту следующий код?

MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];

Примечание: с моим компилятором реализация MyClass имеет приоритет, но я не уверен, гарантированно ли это произойдет, или просто один конкретный вариант неопределенного поведения.

Ответы на вопрос(2)

Ваш ответ на вопрос