iOS 適配低版本的方法
關於適配低版本的裝置
主要介紹了這兩個巨集
__IPHONE_OS_VERSION_MAX_ALLOWED
和__IPHONE_OS_VERSION_MIN_ALLOWED
只介紹了 一個巨集的用法
__IPHONE_OS_VERSION_MAX_ALLOWED
這篇文章值得詳細研究,基本上把適配低版本的內容講完了
文章摘錄
Deployment Target
指的是你的APP能支援的最低系統版本,如要支援iOS6以上,就設定成iOS6即可。Base SDK
指的是用來編譯APP的SDK(Software Development Kit)的版本,一般保持當前XCode支援的最新的就好,如iOS8.4。SDK其實就是包含了所有的你要用到的標頭檔案、連結庫的集合,你的APP裡面用的各種類、函式,能編譯、連結成最後的安裝包,就要靠它,蘋果每次升級系統,新推出的各種API,也是在SDK裡面。所以一般Base SDK肯定是大於等於Deployment Target的版本。
所以並不是說,能編譯通過的,就一定能執行成功!還要在執行時檢查!
- 巨集只在編譯時生效!
通俗易懂的說, 就是 只要是編譯時通過的程式碼, 打包在 真機上執行時就一定會走這些程式碼, 比如, 一個app 編譯的時候deployment target = 6.0 Base SDK = 8.0, 編譯的時候走的都是8.0的方法,那麼我們在真機系統為 iOS6.0的系統上執行的時候,就會走iOS8.0的方法, 那麼一定會奔潰, iOS 系統是向下相容的, iOS 6 中肯定不存在iOS 8 的方法,那麼必須會奔潰啊.
編譯時檢查SDK版本,執行時檢查系統版本
用到的巨集如下:
-
__IPHONE_OS_VERSION_MAX_ALLOWED
: 值等於Base SDK,即用於檢查SDK版本的。 -
__IPHONE_OS_VERSION_MIN_REQUIRED
: 值等於Deployment Target,檢查支援的最小系統版本。
Weakly Linked - 執行時檢查類、方法是否可用 (具體事例 看原文)
用Method Swizzling做相容(這個先不去管, 找時間 和執行時一起研究)
相關文章
- iOS 11適配iOS
- iOS 11 適配的坑iOS
- iOS11 適配iOS
- [iOS]適配iOS10問題iOS
- iOS9適配TipiOS
- [iOS]iOS 7的Navigation適配解決方案iOSNavigation
- iOS13簡單適配iOS
- iOS11適配詳解iOS
- iPhone X + iOS 11 適配指南iPhoneiOS
- iOS 11 & iPhoneX 適配iOSiPhone
- iOS10推送通知適配iOS
- iOS11適配遇到的問題iOS
- iOS10 CAAnimationDelegate 的簡單適配iOS
- 適配iOS 11和iPhoneX螢幕適配遇到的一些坑iOSiPhone
- iOS版本相容以及部分iOS 11適配iOS
- ios11 劉海屏 安全區域 適配 彈框區域適配iOS
- iPhone X和iOS 11的簡單適配iPhoneiOS
- iOS 10 SiriKit QQ 適配詳解iOS
- 適配iPhoneX & iOS11iPhoneiOS
- 【轉】適配iOS9系統iOS
- Android適配: 拉伸適配的缺點Android
- iOS 10 適配知識點總結iOS
- iOS多解析度適配綜述iOS
- 適配iOS11--contentInsetAdjustmentBehavioriOS
- 《iOS 11 安全區域適配總結》iOS
- 10分鐘適配 iOS 11 & iPhone XiOSiPhone
- iOS10推送適配完整說明iOS
- iOS MJRefresh適配ios11以及iPhoneXiOSiPhone
- 適配iOS11, Xcode 9遇到的問題iOSXCode
- iOS12、iOS11、iOS10、iOS9常見適配iOS
- 京東 App適配 iOS 暗黑模式業務實踐APPiOS模式
- iOS 11 適配看這篇還不夠?iOS
- 訪問通訊錄 適配iOS7iOS
- iOS開發 適配iOS10以及Xcode8iOSXCode
- 短視訊軟體開發,ios啟動圖適配和啟動圖示適配iOS
- Widget的簡單應用並適配iOS10iOS
- iOS 10 - Xcode8的各種適配問題iOSXCode
- iOS10 再談 CAAnimationDelegate 相關協議的適配iOS協議