目前開發只想最低版本支持iOS8了,iOS8以前的就不管了,然後現在iOS9和iOS10出來以後,有些新的API,也有些棄用的API,為了兼容,有時候代碼裡面需要編寫判斷不同iOS版本,或者只允許指定的iOS版本才可以編譯或者執行。
需要用到以下方式,以下方式只針對OC(Swift的寫法暫時還不清楚,等需要的時候在補充):
示例:
//ios8.0以後用此方法替代willRotateToInterfaceOrientation:duration:這個方法 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 // 視圖控制器旋轉到某個尺寸 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; if (size.height > size.width) { NSLog(@"-------當前設備方向是豎屏-------"); } else { NSLog(@"-------當前設備方向是橫屏-------"); } } #endif
__IPHONE_OS_VERSION_MIN_REQUIRED:最低iOS版本要求
__IPHONE_OS_VERSION_MAX_ALLOWED:允許最大的iOS版本
#define __MAC_10_0 1000
#define __MAC_10_1 1010
#define __MAC_10_2 1020
#define __MAC_10_3 1030
#define __MAC_10_4 1040
#define __MAC_10_5 1050
#define __MAC_10_6 1060
#define __MAC_10_7 1070
#define __MAC_10_8 1080
#define __MAC_10_9 1090
#define __MAC_10_10 101000
#define __MAC_10_10_2 101002
#define __MAC_10_10_3 101003
#define __MAC_10_11 101100
#define __MAC_10_11_2 101102
#define __MAC_10_11_3 101103
#define __MAC_10_11_4 101104
#define __MAC_10_12 101200
/* __MAC_NA is not defined to a value but is uses as a token by macros to indicate that the API is unavailable */
#define __IPHONE_2_0 20000
#define __IPHONE_2_1 20100
#define __IPHONE_2_2 20200
#define __IPHONE_3_0 30000
#define __IPHONE_3_1 30100
#define __IPHONE_3_2 30200
#define __IPHONE_4_0 40000
#define __IPHONE_4_1 40100
#define __IPHONE_4_2 40200
#define __IPHONE_4_3 40300
#define __IPHONE_5_0 50000
#define __IPHONE_5_1 50100
#define __IPHONE_6_0 60000
#define __IPHONE_6_1 60100
#define __IPHONE_7_0 70000
#define __IPHONE_7_1 70100
#define __IPHONE_8_0 80000
#define __IPHONE_8_1 80100
#define __IPHONE_8_2 80200
#define __IPHONE_8_3 80300
#define __IPHONE_8_4 80400
#define __IPHONE_9_0 90000
#define __IPHONE_9_1 90100
#define __IPHONE_9_2 90200
#define __IPHONE_9_3 90300
#define __IPHONE_10_0 100000
/* __IPHONE_NA is not defined to a value but is uses as a token by macros to indicate that the API is unavailable */
#define __TVOS_9_0 90000
#define __TVOS_9_1 90100
#define __TVOS_9_2 90200
#define __TVOS_10_0 100000
#define __WATCHOS_1_0 10000
#define __WATCHOS_2_0 20000
#define __WATCHOS_3_0 30000
可以在Xcode 中按住Command鍵,點擊查看更多官方定義的宏。