#pragma clang diagnostic

作为预处理指令,#pragma 在编译时进行计算。但它并不像如 #ifdef…#endif 之类的宏,#pragma 的使用方式不会改变你的应用运行时的行为。相反的,#pragma 声明主要由 Xcode 用来完成两个主要任务:整理代码和防止编译器警告。

编译器不显示相应的警告

1、方法启用告警
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
//可能会报警的代码
#pragma clang diagnostic pop

2.不兼容指针类型
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
//可能会报警的代码
#pragma clang diagnostic pop

3.retain cycle
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
//可能会报警的代码
#pragma clang diagnostic pop

4.未使用变量
#pragma clang diagnostic push
#pragma clang diagnostic ignored "--Wunused-variable"
//可能会报警的代码
#pragma clang diagnostic pop

5.selector中使用了不存在的方法名(在使用反射机制通过类名创建类对象的时候会需要的)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wundeclared-selector"
//可能会报警的代码
#pragma clang diagnostic pop

6.整型常量不在枚举范围内
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wassign-enum"
//code这里插入相关的代码
#pragma clang diagnostic pop

7.忽略参数非空检查
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wnonnull"
//code这里插入相关的代码
#pragma clang diagnostic pop

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容