iOS判斷系統(tǒng)版本號(hào)的四種方法

在iOS開發(fā)過(guò)程中娄昆,如果要使用到一些跟特定系統(tǒng)版本特性有關(guān)的功能尤莺,或者要適配低版本系統(tǒng)的用戶九串,還有一些方法是新版本系統(tǒng)才有的踢步,有一些方法在新版本中已經(jīng)棄用了癣亚,這都需要對(duì)不同系統(tǒng)版本的設(shè)備進(jìn)行分別的處理,而這有個(gè)前提就是判斷系統(tǒng)的版本號(hào)获印。

判斷系統(tǒng)版本號(hào)有多種方法述雾,這里都列出來(lái)供大家和自己在開發(fā)中需要時(shí)進(jìn)行選擇使用。

方法一:直接獲取系統(tǒng)版本

iOS提供了直接獲取系統(tǒng)版本號(hào)的方法:

NSString *version = [UIDevice currentDevice].systemVersion;
if (version.doubleValue >= 9.0) {
    // 針對(duì) 9.0 以上的iOS系統(tǒng)進(jìn)行處理
} else {
    // 針對(duì) 9.0 以下的iOS系統(tǒng)進(jìn)行處理
}

這種方法應(yīng)該說(shuō)也是最常見(jiàn)和常用的方法了兼丰。

方法二:通過(guò)Foundation框架版本號(hào)

iOS系統(tǒng)升級(jí)時(shí)Foundation框架也會(huì)升級(jí)版本號(hào)玻孟,我們可以通過(guò)獲取Foundation的版本號(hào)來(lái)判斷對(duì)應(yīng)的iOS版本,這個(gè)iOS也提供了很直觀的宏來(lái)進(jìn)行判斷:

#if TARGET_OS_IPHONE
#define NSFoundationVersionNumber_iPhoneOS_2_0  678.24
#define NSFoundationVersionNumber_iPhoneOS_2_1  678.26
#define NSFoundationVersionNumber_iPhoneOS_2_2  678.29
#define NSFoundationVersionNumber_iPhoneOS_3_0  678.47
#define NSFoundationVersionNumber_iPhoneOS_3_1  678.51
#define NSFoundationVersionNumber_iPhoneOS_3_2  678.60
#define NSFoundationVersionNumber_iOS_4_0  751.32
#define NSFoundationVersionNumber_iOS_4_1  751.37
#define NSFoundationVersionNumber_iOS_4_2  751.49
#define NSFoundationVersionNumber_iOS_4_3  751.49
#define NSFoundationVersionNumber_iOS_5_0  881.00
#define NSFoundationVersionNumber_iOS_5_1  890.10
#define NSFoundationVersionNumber_iOS_6_0  992.00
#define NSFoundationVersionNumber_iOS_6_1  993.00
#define NSFoundationVersionNumber_iOS_7_0 1047.20
#define NSFoundationVersionNumber_iOS_7_1 1047.25
#define NSFoundationVersionNumber_iOS_8_0 1140.11
#define NSFoundationVersionNumber_iOS_8_1 1141.1
#define NSFoundationVersionNumber_iOS_8_2 1142.14
#define NSFoundationVersionNumber_iOS_8_3 1144.17
#define NSFoundationVersionNumber_iOS_8_4 1144.17
#define NSFoundationVersionNumber_iOS_8_x_Max 1199
#define NSFoundationVersionNumber_iOS_9_0 1240.1
#define NSFoundationVersionNumber_iOS_9_1 1241.14
#define NSFoundationVersionNumber_iOS_9_2 1242.12
#define NSFoundationVersionNumber_iOS_9_3 1242.12
#define NSFoundationVersionNumber_iOS_9_4 1280.25
#define NSFoundationVersionNumber_iOS_9_x_Max 1299
#endif

可以看到鳍征,最上面判斷了這是iPhone的系統(tǒng)黍翎,相應(yīng)的還有Mac的系統(tǒng)。這些都是NSFoundationVersionNumber這個(gè)宏定義的值艳丛,我們可以判斷它來(lái)獲取當(dāng)前設(shè)備的系統(tǒng)版本匣掸,用法如下:

if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
    // iOS 9.0 以上系統(tǒng)的處理
} else {
    // iOS 9.0 以下系統(tǒng)的處理
}

方法三:根據(jù)特有的類判斷

我們之前說(shuō)有些類和方法是新版本才有的,要使用的時(shí)候要判斷一下版本號(hào)氮双,但也可以反過(guò)來(lái)利用這一點(diǎn)碰酝,判斷有沒(méi)有這個(gè)類從而得知當(dāng)前的版本號(hào)范圍。

比如說(shuō) UIAlertController 這個(gè)類眶蕉,是iOS 8之后才出現(xiàn)的砰粹,用來(lái)取代 UIAlertView 和 UIActionsheet 的,如果當(dāng)前系統(tǒng)沒(méi)有這個(gè)類造挽,說(shuō)明是低于iOS 8的,可以這么判斷:

if (NSClassFromString(@"UIAlertController")) { // 存在這個(gè)類
    // iOS 8.0 以上系統(tǒng)的處理
} else {
    // iOS 8.0 以下系統(tǒng)的處理
}

方法四:根據(jù)特有的方法進(jìn)行判斷

類似于根據(jù)特有的類來(lái)判斷弄痹,有些方法也是某個(gè)系統(tǒng)版本之后才出現(xiàn)的饭入,根據(jù)有無(wú)這個(gè)方法即可得知當(dāng)前版本號(hào)的范圍,比如 boundingRectWithSize:options:attributes:context: 這個(gè)方法是 iOS 7.0 之后才有的肛真,可以這樣判斷:

if ([@"" respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) { // 存在這個(gè)方法
    // iOS 7.0 以上系統(tǒng)的處理
} else {
    // iOS 7.0 以下系統(tǒng)的處理
}

其實(shí)根據(jù)類和方法來(lái)判斷直接就可以決定使用什么類和方法了谐丢,也算是跳過(guò)了先判斷系統(tǒng)然后選擇方法這一步,嚴(yán)格來(lái)說(shuō)已經(jīng)不算是為了判斷系統(tǒng)版本了蚓让。


查看作者首頁(yè)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乾忱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子历极,更是在濱河造成了極大的恐慌窄瘟,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趟卸,死亡現(xiàn)場(chǎng)離奇詭異蹄葱,居然都是意外死亡氏义,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門图云,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惯悠,“玉大人,你說(shuō)我怎么就攤上這事竣况】松簦” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵丹泉,是天一觀的道長(zhǎng)情萤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嘀掸,這世上最難降的妖魔是什么紫岩? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮睬塌,結(jié)果婚禮上泉蝌,老公的妹妹穿的比我還像新娘。我一直安慰自己揩晴,他們只是感情好辕棚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拧略,像睡著了一般表蝙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劫映,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天违孝,我揣著相機(jī)與錄音,去河邊找鬼泳赋。 笑死雌桑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祖今。 我是一名探鬼主播校坑,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼千诬!你這毒婦竟也來(lái)了耍目?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徐绑,失蹤者是張志新(化名)和其女友劉穎邪驮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泵三,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡耕捞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年衔掸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俺抽。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡敞映,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磷斧,到底是詐尸還是另有隱情振愿,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布弛饭,位于F島的核電站冕末,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侣颂。R本人自食惡果不足惜档桃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望憔晒。 院中可真熱鬧藻肄,春花似錦、人聲如沸拒担。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)从撼。三九已至州弟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間低零,已是汗流浹背婆翔。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掏婶,地道東北人浙滤。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像气堕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子畔咧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)茎芭、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,121評(píng)論 4 61
  • 本書又名《訓(xùn)子書》,為明代袁了凡所作的家訓(xùn)拜隧,全書由四個(gè)部分組成宿百,分別是“立命之學(xué)”趁仙、“改過(guò)之法”、“積善之方”和“...
    精英讀書會(huì)sq閱讀 1,772評(píng)論 1 50
  • 2016年又在恍惚中過(guò)去了垦页,感覺(jué)好像才是上個(gè)月的事雀费。人的年紀(jì)越大就會(huì)覺(jué)得時(shí)間過(guò)得很快,一年一年的痊焊,真的是轉(zhuǎn)瞬即...
    照進(jìn)夢(mèng)想的窩閱讀 134評(píng)論 4 4
  • 最近在一點(diǎn)點(diǎn)摸索的學(xué)習(xí)小程序盏袄,不是我吐槽小程序的開發(fā)文檔,真的是太不友好了薄啥,寫的一點(diǎn)也不詳細(xì)辕羽,我從網(wǎng)上找了一個(gè)小程...
    Zax_Smile閱讀 6,001評(píng)論 0 4
  • 一,笑問(wèn)孟婆湯剩否,一斛斟滿三兩三 空洞的黑垄惧,將此處照亮著刁愿。地獄,沒(méi)有凄慘和荒涼到逊,也沒(méi)有悲吟和哀嚎铣口,有的只是那點(diǎn)點(diǎn)...
    遺落后塵閱讀 1,382評(píng)論 3 10