Disabilita il metodo di istanza non trovato avvertimento
-
14-12-2019 - |
Domanda
Attualmente sto lavorando su una sottoclasse NSProxy
che intercetta determinati messaggi e non li inoltra a nessuno, ma li elaborano solo, quindi questi metodi non esistono mai veramente.E qui arriva il problema, ovviamente il compilatore inizia a lamentarsi delle implementazioni del metodo mancante e non riesco a capire come fermarlo, aggiungendo metodi di stub all'interfaccia solo per ottenere il compilatore per stare zitto non funziona perché i metodisono formati arbitrari e non li conosco avanti (per renderlo un po 'più specifico, sto chiedendo questo Progetto).
Soluzione
Le dichiarazioni di switch non sono davvero arbitrarie, potrebbero avere una lunghezza arbitraria.Per un ampio numero di lunghezze, potresti andare avanti e dichiararli per il beneficio del compilatore (e quindi riceverai il controllo degli errori, che non dovresti solo spento l'avviso).Ad esempio:
typedef void (^ObjCCaseBlock)();
@interface NSObject ()
- (id)switch;
- (void)case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
@end
.
Ripeti a maggior numero di livelli che probabilmente si verificano (e potresti aggiungere livelli se mai urtato in un problema).È un po 'noioso, ma non difficile.