iOS10升級近在眼前,最近在自己目前維護(hù)的項目中發(fā)現(xiàn)一個坑社牲,在系統(tǒng)升為10的時候會出現(xiàn)問題粪薛,希望大家引以為鑒。
在很多項目中有類似下面這樣的宏搏恤,用來比較系統(tǒng)版本號:
#define VERSION_ABOVE(version) (([[[UIDevice currentDevice] systemVersion] compare:version]) != NSOrderedAscending)
這個宏是將版本號轉(zhuǎn)換成字符串進(jìn)行比較违寿。
譬如:VERSION_ABOVE(@"7.0")
,如果當(dāng)前系統(tǒng)是9.0
熟空,則是將字符串@"9.0"
與字符串@"7.0"
比較藤巢,返回結(jié)果正確;但是如果當(dāng)前系統(tǒng)是10.0
息罗,則是將字符串@"10.0"
與字符串@"7.0"
掂咒,結(jié)果會顯示當(dāng)前系統(tǒng)比7.0
小,因?yàn)樽址鞘菑牡谝晃蛔址_始比較迈喉。
建議將該宏改成:
#define VERSION_ABOVE(version) (([[[UIDevice currentDevice] systemVersion] floatValue]) >= (version))
將系統(tǒng)版本號轉(zhuǎn)為浮點(diǎn)數(shù)類型進(jìn)行比較绍刮,Xcode會報錯相應(yīng)的地方,因?yàn)榕f項目version是作為字符串傳入挨摸,所以可以去報錯的地方將version改為浮點(diǎn)數(shù)即可孩革。
若是不想修改舊項目相應(yīng)的地方,可以將宏改為:
#define VERSION_ABOVE(version) (([[[UIDevice currentDevice] systemVersion] floatValue]) >= ([version floatValue]))