iOS低版本调用高版本API的检查

Xcode中的Clang静态检查提供了iOS低版本调用高版本API检查的功能,可以在开发过程中提前发现问题,避免导致兼容性问题。
具体实现如下:

  • Xcode中进入工程的Build Settings页面,在“Other C Flags”和“Other C++ Flags”中增加“-Wunguarded-availablility”,如下图所示:


    图1

    设置好之后,如果误调用了高版本API,Clang会检测到并报出警告。
    为避免警告过多而忽视,可以将设置修改为“-Werror-unguarded-availablility”,一旦iOS低版本调用了高版本API则会编译报错。

  • 针对pod需要在 podspec 中添加 compiler_flags
  • 如果确认代码是安全的,例如使用了respondsToSelector或available等保护,可以用 #pragma clang diagnostic ignored 忽略掉警告,或者 @available 直接解决:
if (@available(iOS 8.0, *)) {
    NSString *str = @"Hello world!";
    [str containsString:@"I'm back!"];
}

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availablility"
NSString *str = @"Hello world!";
[str containsString:@"I'm back!"];
#pragma clang diagnostic pop

参考文章:http://www.qingpingshan.com/rjbc/ios/358986.html

你可能感兴趣的:(iOS低版本调用高版本API的检查)