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).

Idealmente vorrei dire al compilatore che non dovrebbe fare alcun metodo checking per questa classe specifica, ma come questo sembra piuttosto improbabile sarei anche felice per un #pragma o in qualsiasi altro modo (che noIncludi per chiudere il compilatore per ogni avviso nell'intero progetto / file!)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top