เนื่องจากเรามักจะต้องรองรับ OS รุ่นเก่า แต่ให้ความสำคัญกับคำเตือนของเราฉันจึงต้องการวิธีที่เป็นระเบียบมากขึ้นในการดำเนินการนี้ ฉันรวบรวมสิ่งนี้เข้าด้วยกันโดยได้รับแรงบันดาลใจจากรหัส 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 คุณสามารถค้นหาโค้ดเพื่อค้นหาการใช้งานที่เลิกใช้แล้วเพื่อแก้ไขได้