Entiendo exactamente por qué ocurren las advertencias de variables no utilizadas. No quiero suprimirlos en general, porque son increíblemente útiles en la mayoría de los casos. Sin embargo, considere el siguiente código (artificial).
NSError *error = nil;
BOOL saved = [moc save:&error];
NSAssert1(saved, @"Dude!!1! %@!!!", error);
Xcode informa que saved
es una variable no utilizada, cuando por supuesto que no lo es. Sospecho que esto se debe a que NSAssert1
es una macro. La NS_BLOCK_ASSERTIONS
macro no está definida, por lo que las afirmaciones de Objective C definitivamente están habilitadas.
Si bien no duele nada, lo encuentro desordenado y molesto, y quiero suprimirlo, pero no estoy seguro de cómo hacerlo. Asignarse la variable a sí misma elimina la advertencia del compilador, pero prefiero hacerlo de la manera "correcta" si existe tal cosa.
fuente
'saved' was marked as unused but was used
En Xcode puede configurar las advertencias para "Variables no utilizadas". Vaya a "Configuración de compilación" para el destino y filtre con la palabra "no utilizado"
Aquí hay una captura de pantalla:
Te sugiero que solo lo cambies por Debug. De esa manera, no se perderá nada en su versión de lanzamiento.
fuente
Intenta así. Me está funcionando. También funcionará para ti.
fuente
'saved' was marked as unused but was used
La única forma sencilla y portátil de marcar una variable como utilizada es ... utilizarla.
Sin embargo, es posible que esté satisfecho con las extensiones específicas del compilador ya descritas.
fuente
FUENTE
fuente
intente con: atributo __unused. Funciona en Xcode 5
fuente
Puede configurar "No" la advertencia del compliler 2.0 LLVM en "Release"
fuente
Esta es la forma en que lo haces en C y, por lo tanto, también en Objective-C.
Aunque no tenga habilitadas las advertencias, siempre es una buena idea marcar el valor de retorno como explícitamente ignorado. También demuestra a otros desarrolladores que no solo se ha olvidado del valor de retorno, sino que ha elegido explícitamente ignorarlo.
EDITAR: Los compiladores ignoran las conversiones
void
, por lo que no debería afectar el rendimiento, es solo una buena anotación humana limpia.fuente
(void)
es la forma más clara de hacerlo, ¡gracias!Haz que ocupe dos líneas. Separe la declaración y el valor predeterminado
fuente