Con todos los SDK flotando, es útil poder construir para múltiples SDK y plataformas. Sin embargo, rebotando de 3.2 a 3.0 e incluso ocasionalmente 2.x, frecuentemente recibo advertencias obsoletas que involucran métodos que han cambiado o han sido reemplazados:
warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.
Dado que todavía quiero mantener la compatibilidad con sistemas operativos más antiguos, y también me esfuerzo por eliminar el 'ruido' al construir, ¿hay alguna forma de desactivar o desactivar estas advertencias?
Respuestas:
Pruebe
-Wno-deprecated-declarations
, o su configuración correspondiente en Xcode,GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
(consejo profesional: simplemente escriba "obsoleto" en la configuración de compilación para encontrar la configuración específica para esta advertencia).Versiones actuales de Xcode (por ejemplo, Xcode 9.2):
Versiones antiguas de Xcode (por ejemplo, Xcode 2.x, 3.x):
fuente
Como todavía no puedo agregar un comentario a la publicación @samiq, creo que lo expandiré. Ingrese la directiva mencionada antes de una función / método en el que usa cosas obsoletas. Luego puede restaurar la configuración anterior después de la definición del final de la función:
fuente
#pragma GCC diagnostics push #pragma GCC diagnostics ignored "-Wdeprecated-declarations" .. .. Code here .. .. #pragma GCC diagnostic pop
ya que este método lo lleva de vuelta a la configuración establecida antes ... [ gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html]Clang proporciona una buena característica que hace que el paso "restaurar" en la publicación @manicaesar sea independiente del estado de advertencia inicial:
Para citar el manual de Clang :
fuente
Como tendemos a necesitar soporte para sistemas operativos más antiguos, pero prestamos atención a nuestras advertencias, quería una forma más ordenada de hacerlo. Puse esto junto, inspirado en un código de Mozilla
Esto le permite hacer lo siguiente:
También funciona con bloques de código:
Además, cuando abandona el soporte para dispositivos anteriores a iOS 7, puede buscar fácilmente a través del código para encontrar los usos desaprobados para corregir.
fuente
do { ... } while(0);
requerido?do{...}while(0);
se requiere aquí en particular? ¿Por qué no solo{...}
? ¿Por qué noif(true){...}
? etc.También puede suprimir advertencias por archivo utilizando
lo que a su vez lo convierte en una práctica un poco mejor que simplemente suprimir todas las advertencias una vez y juntas ... después de todo, debes saber para qué lo estás haciendo.
fuente
Si desea silenciar la advertencia Implementando método obsoleto o Implementando clase obsoleta , use:
fuente
En su configuración de compilación, busque
Deprecated Functions
.fuente
Si desea una comprobación general de todo tipo de desaprobaciones en un código. Utilice la bandera -Wdeprecated como a continuación:
fuente
Para deshabilitar la advertencia del archivo de encabezado de terceros, agregue la siguiente línea en la parte superior del archivo
fuente