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

 

iOS: 兼容弃用的声明,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。