140 votes

Supprimer les avertissements déconseillés dans Xcode

Avec tous les SDK flottants, il est pratique de pouvoir créer plusieurs SDK et plates-formes. Cependant, en passant de 3.2 à 3.0 et même parfois à 2.x, je reçois fréquemment des avertissements obsolètes impliquant des méthodes modifiées ou remplacées:

 warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.
 

Étant donné que je souhaite toujours conserver la compatibilité avec les anciens systèmes d'exploitation et que je m'efforce également de supprimer le "bruit" lors de la création du logiciel, existe-t-il un moyen de désactiver ou de désactiver ces avertissements?

340voto

manicaesar Points 2254

Comme je ne peux pas encore ajouter de commentaire au billet de @samiq, je pense que je vais le développer. Entrez la directive mentionnée avant une fonction / méthode dans laquelle vous utilisez des éléments obsolètes. Ensuite, vous pouvez restaurer le paramètre précédent après la définition de la fonction end:

 #pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
- (void) methodUsingDeprecatedStuff {
    //use deprecated stuff
}
#pragma GCC diagnostic pop
 

149voto

Andrew Hershberger Points 1491

Clang fournit une fonctionnalité intéressante qui fait de la "restauration" de l'étape dans le @manicaesar post indépendant de l'avertissement initial de l'état:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
- (void) methodUsingDeprecatedStuff {
    //use deprecated stuff
}
#pragma clang diagnostic pop

Pour citer le Cliquetis manuel:

En plus de toutes les fonctionnalités offertes par GCC de pragma, Clang vous permet également de push et pop le courant de l'état d'avertissement. Ceci est particulièrement utile lors de l'écriture d'un fichier d'en-tête qui sera compilé par d'autres personnes, parce que vous ne savez pas ce que les signaux d'alarme qu'ils ont avec.

85voto

Paul R Points 104036

Essayez -Wno-deprecated-declarations ou son paramètre correspondant dans Xcode, GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS :

entrez la description de l'image ici

29voto

samiq Points 1128

Vous pouvez également supprimer les avertissements par fichier en utilisant

 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
 

ce qui en retour rend la pratique un peu meilleure que de simplement supprimer tous les avertissements une fois et ensemble ... après tout, vous devez savoir pourquoi vous le faites.

-3voto

harvestli Points 4

Pour désactiver l'avertissement provenant d'un fichier d'en-tête tiers, ajoutez la ligne suivante en haut du fichier.

 #pragma clang system_header
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X