你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS10之compare

iOS10之compare

編輯:IOS開發綜合

最近項目不是很緊了 所有閒時 看看其他的開發的語言 回味開發中遇到的一些 低級的錯誤 想起的 compare 這個逗逼

看代碼

這裡寫圖片描述

#define IOS7_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )
#define IOS8_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending )
#define IOS9_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"9.0"] != NSOrderedAscending )

這段代碼肯定是正確的 沒有疑問的 拋開性能等等一切其他因素 但是到了 iOS10 的時候 我同事就被這個逗比坑了一回 (無言以對)

跟新iOS10的時候 在做相關版本適配的時候 逗逼習慣性的加上了這行代碼 (汗顏)

這裡寫圖片描述

#define IOS10_OR_LATER   ( [[[UIDevice currentDevice] systemVersion] compare:@"10.0"] != NSOrderedAscending )

最後上線後發現一啟動就會崩潰 拉出來查找各種情況 發現就是這個逗比compare 坑了

因為 compare 比較字符串的時候是按照 ascii碼來比較的 如果你的系統時10.0 的 那麼 “9.0”>”10.0”的

因該轉換為 浮點數再比較 這樣更加保險和可行些

#define kIOS_VERSION   ([[[UIDevice currentDevice] systemVersion] floatValue])

#define kIOS7_OR_LATER  (kIOS_VERSION >= 7.0)
#define kIOS8_OR_LATER  (kIOS_VERSION >= 8.0)
#define KIOS9_OR_LATER  (kIOS_VERSION >= 9.0)
#define KIOS10_OR_LATER (kIOS_VERSION >= 10.0)
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved