Pergunta

Atualmente estou trabalhando em um NSProxy subclasse que intercepta certas mensagens e nunca as encaminha para ninguém, apenas as processa, portanto, esses métodos nunca existem realmente.E aí vem o problema, obviamente o compilador começa a reclamar da falta de implementações de métodos e não consigo descobrir como pará-lo, adicionar métodos stub à interface apenas para fazer o compilador calar a boca não funciona porque os métodos são formados arbitrariamente e não os conheço antecipadamente (para ser um pouco mais específico, estou pedindo esse projeto).

Idealmente, eu gostaria de dizer ao compilador que ele não deveria fazer nenhuma verificação de método para esta classe específica, mas como isso parece bastante improvável, eu também ficaria feliz por um #pragma ou de qualquer outra forma (que não inclui desligar o compilador para cada aviso em todo o projeto/arquivo!)

Foi útil?

Solução

Suas instruções switch não são realmente arbitrárias, elas apenas podem ter um comprimento arbitrário.Para um amplo número de comprimentos, você poderia ir em frente e declará-los para o benefício do compilador (e você obteria a verificação de erros, o que não aconteceria se você apenas desativasse o aviso).Por exemplo:

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

Repita para quantos níveis forem possíveis (e você poderá adicionar níveis se encontrar algum problema).É um pouco tedioso, mas não é difícil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top