NSLineBreakMode枚举和向后兼容性

我需要我的应用程序来支持iOS 5 +。 由于之前的iOS 6中, UILabel中的UILineBreakModeUILineBreakModetypes的,并且它是iOS 6+的NSLineBreakModetypes,所以应该最好(或更正确)检查当前运行的iOS版本以确定types被使用? 直接做[[UIDevice currentDevice] systemVersion]是否正确,还是有更好的方法?

谢谢!

您不需要在运行时检查iOS版本,枚举值是相同的,从UILineBreakMode移动到UILineBreakMode时编译的代码将不会更改

 enum { NSLineBreakByWordWrapping = 0, NSLineBreakByCharWrapping, NSLineBreakByClipping, NSLineBreakByTruncatingHead, NSLineBreakByTruncatingTail, NSLineBreakByTruncatingMiddle }; typedef NSUInteger NSLineBreakMode typedef enum { UILineBreakModeWordWrap = 0, UILineBreakModeCharacterWrap, UILineBreakModeClip, UILineBreakModeHeadTruncation, UILineBreakModeTailTruncation, UILineBreakModeMiddleTruncation, } UILineBreakMode; 

如果你想检查操作系统版本,你可以使用这个代码:

 + (NSInteger)OSVersion { static NSUInteger _deviceSystemMajorVersion = -1; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _deviceSystemMajorVersion = [[[[UIDevice currentDevice] systemVersion] componentsSeparatedByString:@"."][0] intValue]; }); return _deviceSystemMajorVersion; }