方法一:直接獲取系統(tǒng)版本 iOS提供了直接獲取系統(tǒng)版本號的方法:
NSString *version = [UIDevice currentDevice].systemVersion;
if (version.doubleValue >= 9.0) {
// 針對 9.0 以上的iOS系統(tǒng)進行處理
} else {
// 針對 9.0 以下的iOS系統(tǒng)進行處理
}
這種方法應(yīng)該說也是最常見和常用的方法了。
方法二:通過Foundation框架版本號
iOS系統(tǒng)升級時Foundation框架也會升級版本號,我們可以通過獲取Foundation的版本號來判斷對應(yīng)的iOS版本,這個iOS也提供了很直觀的宏來進行判斷:
if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
// iOS 9.0 以上系統(tǒng)的處理
} else {
// iOS 9.0 以下系統(tǒng)的處理
}
方法三:根據(jù)特有的類判斷
比如說 UIAlertController 這個類,是iOS 8之后才出現(xiàn)的,用來取代 UIAlertView 和 UIActionsheet 的,如果當前系統(tǒng)沒有這個類,說明是低于iOS 8的,可以這么判斷:
if (NSClassFromString(@"UIAlertController")) {
// 存在這個類 // iOS 8.0 以上系統(tǒng)的處理
} else {
// iOS 8.0 以下系統(tǒng)的處理
?}
方法四:根據(jù)特有的方法進行判斷
類似于根據(jù)特有的類來判斷,有些方法也是某個系統(tǒng)版本之后才出現(xiàn)的,根據(jù)有無這個方法即可得知當前版本號的范圍,比如 boundingRectWithSize:options:attributes:context: 這個方法是 iOS 7.0 之后才有的,可以這樣判斷:
if ([@"" respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) {
// 存在這個方法 // iOS 7.0 以上系統(tǒng)的處理
} else {
// iOS 7.0 以下系統(tǒng)的處理
}
其實根據(jù)類和方法來判斷直接就可以決定使用什么類和方法了,也算是跳過了先判斷系統(tǒng)然后選擇方法這一步,嚴格來說已經(jīng)不算是為了判斷系統(tǒng)版本了。