Я знаю несколько правил в отношении категорий Objective-C:Что произойдет, если две категории ObjC переопределяют один и тот же метод?
- метода Категория не должна переопределять существующие методы (класс или экземпляр)
- Два различных категории, реализующие один и тот же метод для того же класс приведет к непредсказуемому поведению
Я хотел бы знать, что происходит, когда я переопределить один из моих собственных методов категории в т он такой же категории. Например:
@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 имеет преимущество, но я не уверен, что гарантированно произойдет, или просто один специфический вкус неопределенного поведения.
Правильно ли переопределить метод Category, объявленный и реализованный в категории суперкласса? – BergP