iOS: 兼容弃用的声明
随着 iOS 版本的升级,之前项目中难免某个声明的使用已经被弃用,例如:
// Deprecated: use NSTextAlignment enum in UIKit/NSText.h typedef NS_ENUM(NSInteger, UITextAlignment) { UITextAlignmentLeft = 0, UITextAlignmentCenter, UITextAlignmentRight, // could add justified in future } NS_DEPRECATED_IOS(2_0,6_0);
而取而代之的新声明又不能在低版本 SDK 上使用,这么放着不管看上去没什么影响,除了碍眼的警告。
实则不然,被弃用的声明的实现很有可能在将来的某个 SDK 版本中表现异常,所以,如何兼容呢?
#ifdef __IPHONE_6_0 // iOS6 and later #define UITextAlignmentCenter NSTextAlignmentCenter #define UITextAlignmentLeft NSTextAlignmentLeft #define UITextAlignmentRight NSTextAlignmentRight #define UILineBreakModeTailTruncation NSLineBreakByTruncatingTail #define UILineBreakModeMiddleTruncation NSLineBreakByTruncatingMiddle #endif
这么一处理,旧的声明就可以大小通吃了。当然还可以用自定义的字符串去宏定义,稍显麻烦点,不过字面意思可能会更好理解,仁者见仁。
#ifdef __IPHONE_7_0 #define BPForegroundColorAttributeName NSForegroundColorAttributeName #define BPFontAttributeName NSFontAttributeName #else #define BPForegroundColorAttributeName UITextAttributeTextColor #define BPFontAttributeName UITextAttributeFont #endif
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。