iOS 适配低版本的方法

关于适配低版本的设备

  • 关于__IPHONE_OS_VERSION_MAX_ALLOWED和__IPHONE_OS_VERSION_MIN_ALLOWED的用法

主要介绍了这两个宏__IPHONE_OS_VERSION_MAX_ALLOWED__IPHONE_OS_VERSION_MIN_ALLOWED

  • __IPHONE_OS_VERSION_MAX_ALLOWED理解

只介绍了 一个宏的用法 __IPHONE_OS_VERSION_MAX_ALLOWED

  • iOS 低版本兼容,适配低版本的一些方法 宏,Category,Runtime

这篇文章值得详细研究,基本上把适配低版本的内容讲完了

文章摘录

  • 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 适配低版本的方法)