2012-03-14 11 views
5

Actualmente estoy trabajando en una subclase NSProxy que intercepta ciertos mensajes y nunca los reenvía a nadie, solo los procesa, por lo que estos métodos nunca existen. Y aquí viene el problema, obviamente el compilador comienza a quejarse sobre las implementaciones de métodos faltantes y no puedo encontrar la manera de detenerlo, agregar métodos stub a la interfaz solo para hacer que el compilador se apague no funciona porque los métodos son arbitrariamente formados y no los conozco de antemano (para hacerlo un poco más específico, estoy pidiendo el proyecto this).Deshabilitar método de instancia no encontrado advertencia

Idealmente, me gustaría decirle al compilador que no debería hacer ningún método de comprobación para esta clase específica en absoluto, pero como esto parece bastante improbable, también estaría contento por un #pragma o de otra manera (que no funciona). t incluir para cerrar el compilador para cada advertencia en todo el proyecto/archivo!)

Respuesta

1

Sus instrucciones de cambio no son realmente arbitrarias, simplemente podrían tener una longitud arbitraria. Para una gran cantidad de longitudes, puede continuar y declararlas para el beneficio del compilador (y luego obtendría la comprobación de errores, lo que no haría si acabara de desactivar la advertencia). Por ejemplo:

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 tantos niveles como es probable que ocurra (y se podría añadir niveles si alguna vez se encontró con un problema). Es un poco tedioso, pero no es difícil.

+0

Esto no funciona con 'default' que no está forzado a estar al final ... – JustSid

+0

O bien, funciona, pero se vuelve grande y desagradable en muy poco tiempo. – JustSid

+0

Después de buscar en Google un poco, parece ser la única opción (archivó un radar para el '# pragma') ... No estoy muy contento con la solución, pero creo que tiene que hacer el truco para ahora. – JustSid

Cuestiones relacionadas