#pragma clang diagnostic push
#pragma clang diagnostic ignored "相关指令"
// 代码
#pragma clang diagnostic pop
在上面所示代码位置添加代码,在添加相对应的指令可以去除编译时编译器的警告
常见指令如下
指令 | 用处 |
---|---|
-Wincompatible-pointer-types |
方法弃用警告 |
-Wincompatible-pointer-types |
不兼容指针类型 |
-Wobjc-protocol-method-implementation |
在类别中重写方法 |
-Warc-retain-cycles |
循环引用 |
-Wunused-variable |
未使用变量 |
-Wincomplete-implementation |
没有实现已声明的方法 |
-Wprotocol |
没有实现协议的方法 |
-Wimplicit-function-declaration |
尚未声明的函数(通常指c函数) |
-Wdeprecated-declarations |
使用了不推荐使用的方法 |
举个例子
@implementation NSMutableArray (category)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"//去除类别中重写方法的编译器警告指令
- (void)removeLastObject {
if (self.count) {
[self removeObjectAtIndex:self.count - 1];
}
}
#pragma clang diagnostic pop
@end
在NSMutableArray的类别中重写了removeLastObject
方法,如果不加这个宏及相应的指令,编译时会有警告
连接中是相关指令的收集,最后更新是15年 我是这个连接
注意这个有趣的域名
拓展一下,C语言的GCC编译器也有一些警告,通常可以使用
#pragma GCC 相关指令
消除警告,链接是GCC相关的指令传送门
网友评论