身為開發者的我們,面對程式語言日新月異是非常正常的事情,iOS每年都會發佈更新,於是我們就必須去了解哪些API即將棄用(deprecated),在未來的專案就儘量不要去使用。
這張iOS支援陣列圖非常詳細地描述i設備的各種特性,點開放大來看可說是嘆為觀止!如果是個Apple粉絲開發者,那麼鐵定要好好徹底了解它:D
實際上我是在iOS 5開始接觸寫iOS APP,恰好可以藉由這一張iOS版本比較圖表來回顧過去與放眼未來! Apple已公開今年2014 WWDC是在六月初,由於想與會的人非常之多,這次顛覆以往搶購的規則,令人震驚地採取抽籤機制,只要是開發者都有機會被抽中,哈~我好想去蘋果總部一趟呀!
過去的我沒什麼在寫判斷iOS版本的程式碼,其實也是不太曉得哪些API已被棄用,直到測試的時候使用不同iOS版本的機子,發生crash的狀況才很訝異地找到問題。
/** Theme: Detect iOS version IDE: Xcode 5 Language: Objective C Date: 103/04/14 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_0) { //做以前就能做的事情 } else { //做未來才能做的事情 } NSObjCRuntime.h #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 993.00 #define NSFoundationVersionNumber_iOS_6_1 993.00 #endif
可以見到,這些關鍵字都被定義成浮點數,於是知道這一點之後,我們就能以數值來判斷版本範圍囉~
比較讓人疑惑的是,居然沒有iOS 7.0和iOS 7.1,明明就已經更新Xcode 5.1了呢!
開發的時候總會有兩種狀況:
- 舊版iOS呼叫新版SDK:會崩潰
- 新版iOS呼叫棄用(deprecated)SDK:沒事,通常還可以使用
參考:彼得潘、iOS Support Matrix。
隨意留個言吧:)~