野火🔥

【iOS】简单处理不小心调用高版本API的问题

2017/11/12 Share

iOS API 版本检查

如果app兼容2个以上版本,那就需要注意低版本不能调用高版本API,为避免开发过程中不小心调用,必要的工具检查是必须的,下面介绍一种简单的方法处理。

原理 —- Clang

2015 年 clang 本身增加 API 版本检查功能,通过 -Wpartial-availability 这个 flag 可以打开,后续版本把 flag 变成了 -Wunguarded-availability。打开之后,clang 会把所有在低版本 iOS 上调用高版本 API 的情况用 warning 暴露出来,如下图所示。

具体实现

  • 1、打开 -Wunguarded-availability 在调用高版本API时候报warning,为避免warning过多而忽视,用 -Werror-unguarded-availability 标记强制编译不过。
  • 2、针对pod需要在 podspec 中添加compiler_flags
  • 3、如果代码本身安全(使用了 respondsToSelector: 保护),可以用 #pragma clang diagnostic ignored 的方式压掉警告,或者 @available 直接解决,如下图。

CATALOG
  1. 1. iOS API 版本检查
    1. 1.0.1. 原理 —- Clang
    2. 1.0.2. 具体实现