iphone - sheet - slider ios guideline




Suprimindo Avisos Descontinuados no Xcode (6)

Com todos os SDKs flutuando, é útil criar vários SDKs e plataformas. No entanto, saltando de 3.2 para 3.0 e mesmo ocasionalmente 2.x, freqüentemente recebo avisos preteridos envolvendo métodos que foram alterados ou foram substituídos:

warning: 'UIKeyboardBoundsUserInfoKey' is deprecated.

Como eu ainda quero manter a compatibilidade com sistemas operacionais mais antigos, e também estou me esforçando para remover o 'ruído' durante a criação, existe uma maneira de desativar ou desativar esses avisos?


Como ainda não posso adicionar um comentário ao post do @samiq, acho que vou expandi-lo. A entrada mencionou a diretiva antes de uma função / método em que você usa coisas obsoletas. Então você pode restaurar a configuração anterior após a definição do final da função:

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

Como tendemos a precisar de suporte a sistemas operacionais mais antigos, mas prestar atenção aos nossos avisos, eu queria uma maneira mais prática de fazer isso. Eu coloquei isso junto, inspirado por algum código Mozilla:

#define SILENCE_DEPRECATION(expr)                                   \
do {                                                                \
_Pragma("clang diagnostic push")                                    \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")   \
expr;                                                               \
_Pragma("clang diagnostic pop")                                     \
} while(0)

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr)

Isso permite que você faça o seguinte:

SILENCE_IOS7_DEPRECATION(return [self sizeWithFont:font constrainedToSize:size]);

Também funciona com blocos de código:

SILENCE_IOS7_DEPRECATION(
    view = [[MKPolylineView alloc] initWithPolyline:self];
    view.lineWidth = self.lineWidth;
    view.strokeColor = self.color;
);

Além disso, quando você descarta o suporte para dispositivos pré-iOS 7, pode pesquisar facilmente o código para localizar os usos descontinuados a serem corrigidos.


O Clang fornece um recurso interessante que torna a etapa de "restauração" no post do @manicaesar independente do estado de aviso inicial:

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

Para citar o manual do Clang:

Além de todas as funcionalidades fornecidas pelo pragma do GCC, o Clang também permite que você pressione e insira o estado de aviso atual. Isso é particularmente útil ao gravar um arquivo de cabeçalho que será compilado por outras pessoas, porque você não sabe com quais sinalizadores de aviso elas são construídas.


Para desativar o aviso do arquivo de cabeçalho de terceiros, adicione a seguinte linha na parte superior do arquivo

#pragma clang system_header

Se você quiser uma verificação geral para todos os tipos de depreciação em um pedaço de código. Por favor, use o sinalizador -Wdeprecated como abaixo:

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

Tente -Wno-deprecated-declarations , ou a sua definição correspondente no Xcode, GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS (pro dica: basta digitar "depreciado" nas configurações de compilação para encontrar a configuração específica para este aviso).

Versões atuais do Xcode (por exemplo, Xcode 9.2):

Versões antigas do Xcode (por exemplo, Xcode 2.x, 3.x):





warnings