很多系統(tǒng)方法都有版本支持的說明,所以對于支持多個系統(tǒng)版本顽分,需要判斷系統(tǒng)版本來執(zhí)行方法觅彰。
比如:
+ (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier NS_DEPRECATED(NSURLSESSION_AVAILABLE, 10_10, 7_0, 8_0, "Please use backgroundSessionConfigurationWithIdentifier: instead");
+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier NS_AVAILABLE(10_10, 8_0);
第一個方法只支持7-8版本,第二個8版本以后開始起用替裆。
- 方法1:獲取系統(tǒng)版本
NSString * systemVersion = [UIDevice currentDevice].systemVersion;
if (systemVersion.doubleValue >= 9.0) {
//針對 9.0 以上的iOS系統(tǒng)進行處理
}
else{
//針對 9.0 以下的iOS系統(tǒng)進行處理
}
- 方法2:通過Foundation框架版本號
if(NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
//針對 9.0 以上的iOS系統(tǒng)進行處理
}
else{
//針對 9.0 以下的iOS系統(tǒng)進行處理
}
- 方法3:根據(jù)特有的類判斷
if (NSClassFromString(@"UNNotification")) {
// 存在這個類 iOS 10.0 以上系統(tǒng)的處理
} else {
// iOS 10.0 以下系統(tǒng)的處理
}
- 方法4:根據(jù)特有的方法進行判斷
if ([UIFont respondsToSelector:@selector(preferredFontForTextStyle:compatibleWithTraitCollection:)]) {
// 存在這個方法 iOS 10.0 以上系統(tǒng)的處理
} else {
// iOS 10.0 以下系統(tǒng)的處理
}
方法3校辩、4基本上是已經(jīng)知道了類或者方法的系統(tǒng)支持版本再進行判斷了窘问,可用性不是很高。另外宜咒,為了防止警告惠赫,可能在判斷里還需要加一些宏來去掉警告,參考:#pragma GCC diagnostic 編譯器警告