¿Puedo usar una categoría de clase para anular un método que ya está implementado usando una categoría? Me gusta esto:
1) Método original
-(BOOL) method {
return true;
}
2) Método anulado
-(BOOL) method {
NSLog(@"error?");
return true;
}
¿Funcionará esto o es ilegal?
fuente
Puede hacer esto adaptando el enfoque de Class Cluster o usando métodos swizzling técnica.
De lo contrario, el comportamiento de dos o más métodos categorizados no está definido.
fuente
El enlace de documentación anterior está muerto; El mejor reemplazo que pude encontrar fue aquí: Apple Docs :
Es Apple usando un toque más ligero, pero el punto principal es el mismo: invitas al desastre, porque el comportamiento impredecible es silencioso.
fuente
Es importante tener en cuenta que una categoría también se puede usar para anular los métodos existentes en la clase base (por ejemplo, el método de conducción de la clase Car), pero nunca debe hacer esto. El problema es que las categorías son una estructura organizativa plana. Si anula un método existente en Car + Maintenance.m, y luego decide que desea cambiar su comportamiento nuevamente con otra categoría, no hay forma de que Objective-C sepa qué implementación usar. La subclasificación es casi siempre una mejor opción en tal situación.
De este tutorial, http://rypress.com/tutorials/objective-c/categories
fuente