चूंकि हमें पुराने OSes का समर्थन करने की आवश्यकता है, लेकिन हमारी चेतावनियों पर ध्यान दें, मुझे ऐसा करने के लिए एक कठिन रास्ता चाहिए था। मैंने कुछ मोज़िला कोड से प्रेरित होकर इसे एक साथ रखा:
#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 उपकरणों के लिए ड्रॉप सपोर्ट करते हैं, तो आप ठीक करने के लिए हटाए गए usages को खोजने के लिए कोड के माध्यम से आसानी से खोज सकते हैं।