自己参与的一个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