Yo sé de un par de reglas con respecto a las categorías de Objective-C:¿Qué sucede si dos categorías ObjC anulan el mismo método?
- métodos categoría no deben reemplazar los métodos existentes (clase o instancia)
- Dos diferentes categorías que aplican el mismo método para el mismo clase tendrá como resultado un comportamiento indefinido
me gustaría saber lo que sucede cuando puedo reemplazar uno de mis propios métodos categoría en t la misma categoría. Por ejemplo:
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
Con estas interfaces definidas, ¿qué método se ejecutará cuando ejecute el siguiente código?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
Nota: Con mi compilador, la implementación MyClass tiene prioridad, pero no estoy seguro de si eso se garantiza que ocurra, o simplemente un sabor específico de un comportamiento indefinido.
¿Es correcto sobrescribir en el método de Categoría declarado e implementado en Categoría de superclase? – BergP