iOS常用的忽略警告方法

2,523 阅读1分钟

自己参与的一个iOS App 在一次版本升级中规定 最低支持到iOS9.0系统,如果程序中继续使用苹果提供的一些在高版本要废弃的API就会有有警告,不允许集成代码。 比如stringByAddingPercentEscapesUsingEncoding:方法在 iOS 9.0中被废弃了。
那如果不想改(改动带来的风险太大)又不想有警告,该怎么做呢?
了解到可以使用#pragma 声明来防止编译器报警告。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "相关命令"
    // 你自己的代码
#pragma clang diagnostic pop

针对不同的场景,相关命令不一样,常用的有如下五种:

  • 未使用变量警告:-Wunused-variable
  • 方法弃用警告:-Wdeprecated-declarations
  • 循环引用警告:-Warc-retain-cycles
  • 不兼容指针类型警告:-Wincompatible-pointer-types
  • 内存泄漏警告:-Warc-performSelector-leaks

比如忽略方法弃用警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    // 调了弃用API的代码
#pragma clang diagnostic pop