Quando si utilizza categorie, è possibile sostituire i metodi di implementazione con il proprio in questo modo:Sostituire un metodo tramite Categoria ObjC e chiamare l'implementazione predefinita?
// 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
chiamata al metodo "myMethod" dopo aver incluso la categoria le reti con risultato "B".
Qual è il modo più semplice per l'implementazione di categoria di myMethod per chiamare la classe originale MyMethod? Per quanto riesca a capire, dovresti usare le chiamate di basso livello per ottenere il metodo originale di aggancio per la Classe A e chiamarlo, ma sembrava che ci sarebbe stato un modo sintatticamente più semplice per farlo.
Non è necessariamente un modo 'hacker'. Il runtime Objective-C è lì per un motivo. È ciò che rende Objective-C superiore ad altri linguaggi compilati. –
Sulla base della mia esperienza, tagliando all'inseguimento, si desidera utilizzare JRSwizzle, come indicato nel link precedente. È stato a prova di proiettile per me. –
Link al codice JRSwizzle: https://github.com/rentzsch/jrswizzle ... Sono arrivato ad amare questo metodo, il swizzling è MOLTO potente ogni volta che vuoi modificare una libreria di terze parti per fare come ti pare! – LearnCocos2D