Поскольку нам, как правило, необходимо поддерживать старые ОС, но обратите внимание на наши предупреждения, мне нужен более аккуратный способ сделать это. Я собрал это вместе, вдохновленный некоторым кодом 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)
Это позволяет вам сделать следующее:
SILENCE_IOS7_DEPRECATION(return [self sizeWithFont:font constrainedToSize:size]);
Он также работает с блоками кода:
SILENCE_IOS7_DEPRECATION(
view = [[MKPolylineView alloc] initWithPolyline:self];
view.lineWidth = self.lineWidth;
view.strokeColor = self.color;
);
Кроме того, когда вы отказываетесь от поддержки устройств до iOS 7, вы можете легко выполнить поиск по коду, чтобы найти устаревшие способы использования, которые нужно исправить.