Como tendemos a precisar oferecer suporte a sistemas operacionais mais antigos, mas preste atenção aos nossos avisos, eu queria uma maneira mais organizada de fazer isso. Eu montei isso, inspirado em 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ê dispensa o suporte a dispositivos anteriores ao iOS 7, pode pesquisar facilmente o código para encontrar os usos obsoletos a serem corrigidos.