Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo eliminar ciertos tipos de advertencias de proyectos Xcode

Cómo eliminar ciertos tipos de advertencias de proyectos Xcode

1. La forma más directa, de una vez por todas y más segura es encontrar el código que emite la advertencia y cambiarlo para que no emita la advertencia. Este método es el más seguro.

Pero tiene un problema, es decir, cuando tenemos una gran cantidad de archivos con este tipo de advertencias, necesitamos modificar una gran cantidad de código fuente, y para el código fuente que no está escrito por nosotros y puede actualizarse en cualquier momento, nuestro método obviamente no es aconsejable.

2. Utilice las macros proporcionadas por el compilador para lograr esto, lo cual es muy común en nuestros proyectos:

#pragma clang diagnostic push

#pragma clang diagnóstico ignorado "-Wdeprecated- declaraciones"

#pragma clang diagnóstico ignorado "-Wdeprecated- declaraciones"

#pragma clang diagnóstico ignorado "-Wdeprecated- declaraciones"

// El código escrito en el medio no será solicitado por el compilador - Advertencia de tipo Wdeprecated-declarations

dispatch_queue_tcurrentQueue =dispatch_get_current_ queue();

#pragma clang diagnostic pop

Los problemas que surgen en este método son similares al primero, y la implementación del código fuente debe modificarse para terceros, definitivamente no estamos dispuestos a cambiarlo, especialmente cuando algunas actualizaciones de terceros. son muy frecuentes, el autor actualiza poco después de que aparece la advertencia general, ¡y ahí es donde nos detenemos! Hacerlo sólo será una pérdida de tiempo. Y al agregar compatibilidad con arm64, puede llevar mucho tiempo cambiar cientos de advertencias de un determinado tipo que aparecen al mismo tiempo.

Por ejemplo, en nuestro proyecto, activamos arm64 y compilamos:

3. Desactivamos advertencias de tipos específicos para archivos específicos.

Aquí tomamos una proyecto específico como ejemplo. Por ejemplo, tenemos un archivo PresencePacket en nuestro proyecto

Desactivar un cierto tipo de advertencia para un archivo específico es muy simple, simplemente agregue ignorar/mostrar un cierto tipo de advertencia, tal como agregamos para el archivo como lo hace cuando un archivo es o no compatible con ARC

Haga doble clic en el archivo y agregue -Wno-shorten-64 -to-32 en él (la clave es hacer que el compilador ignore los archivos implícitos). conversiones, reduciendo así el número entero Precisión: advertencia de NSInteger' (también conocido como 'long') a 'int32_t' (también conocido como 'int')

Después de agregar el archivo y compilar, "La conversión implícita en el archivo PresencePacket pierde el número entero precision: 'NSInteger' (también conocido como 'long') to 'int32_t' (también conocido como 'int')" y la advertencia desaparece. ¿No es muy simple y conveniente? .

De esta manera, es mucho más fácil simplemente agregar -Wno-shorten-64-to-32 al compilar el archivo especificado.

¿Existe alguna manera de hacer que el compilador ignore las advertencias de un tipo específico durante todo el proyecto?

4. Desactive el tipo de advertencia especificado en el proyecto

Esto es lo más simple, hay Otros indicadores de advertencia (otros indicadores de advertencia) en el objetivo del proyecto

Agregue -Wno-shorten-64-to-32

Luego vuelva a compilar, jaja. La conversión implícita en todo el archivo pierde precisión entera: 'NSInteger' (también conocido como 'long') a 'int32_t' ( también conocido como 'int') (la conversión implícita pierde precisión de números enteros: ¡las advertencias de 'NSInteger' (también conocido como 'long') a 'int32_t' (también conocido como 'int') desaparecieron!

5 Quizás se pregunte de dónde proviene el -Wno-shorten-64-to-32 anterior y cómo sé que la conversión implícita pierde precisión entera: 'NSInteger' (también conocido como 'long') a 'int32_t' (también conocido como 'int'). ) la advertencia es del tipo -Wno-shorten-64-to-32? Aquí, no es necesario que la recuerdes cuando aparece este tipo de advertencia en el proyecto

En la ventana de advertencia, tenemos derecho- haga clic en una de las advertencias para que aparezca el menú contextual y luego seleccione Mostrar en el registro

Tenga en cuenta que [-Wshorten-64-to-32] entre paréntesis es el tipo de advertencia, y - El El prefijo W indica que este tipo de advertencia está activado. W es un prefijo que indica que este tipo de advertencia está activado. Si queremos desactivar un determinado tipo de advertencia, reemplace -W con -Wno-

.

Esto da -Wno-shorten-64-to-32

.