Al utilizar categorías, puede reemplazar los métodos de aplicación con su propio modo:¿Anular un método vía Categoría ObjC y llamar a la implementación predeterminada?
// Base Class
@interface ClassA : NSObject
- (NSString *) myMethod;
@end
@implementation ClassA
- (NSString*) myMethod { return @"A"; }
@end
//Category
@interface ClassA (CategoryB)
- (NSString *) myMethod;
@end
@implementation ClassA (CategoryB)
- (NSString*) myMethod { return @"B"; }
@end
Al llamar al método "myMethod" después de incluir la categoría Nets el resultado "B".
¿Cuál es la forma más fácil para que la implementación de categoría de myMethod llame al Class A original myMethod? Tan cerca como pueda imaginar, tendrías que usar las llamadas de bajo nivel para obtener el método original de enganche para Clase A y llamar eso, pero parecía que habría una manera sintácticamente más fácil de hacer esto.
No es necesariamente una forma "hackosa". El tiempo de ejecución de Objective-C está ahí por una razón. Es lo que hace que Objective-C sea superior a otros lenguajes compilados. –
De acuerdo con mi experiencia, yendo al grano, quiere usar JRSwizzle, como se menciona en el enlace de arriba. Ha sido a prueba de balas para mí. –
Enlace al código de JRSwizzle: https://github.com/rentzsch/jrswizzle ... Me encanta esto, el método swizzling es MUY poderoso siempre que quieras modificar una biblioteca de terceros para que haga lo que quieras. – LearnCocos2D