Оскільки ми, як правило, потребуємо підтримки старих ОС, але звертаємо увагу на наші попередження, я хотів, щоб це було більш акуратним. Я поєднав це, надихнувшись кодом 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, ви можете легко шукати код, щоб знайти застарілі звички, які потрібно виправити.