Что произойдет, если две категории 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 имеет приоритет, но я не уверен, гарантированно ли это произойдет, или просто один конкретный вариант неопределенного поведения.