忽略代码中的警告

开发中经常会遇到由于各种原因导致的警告,虽然不影响具体的功能,但是看起来总是让人厌烦,尤其是有强迫症的开发们,而且警告太多会影响对于真正问题的发掘,今天我们来尝试去掉这些警告.常见的警告类型有:
常见警告的名称1.声明变量未使用"-Wunused-variable"2.方法定义未实现"-Wincomplete-implementation"3.未声明的选择器"-Wundeclared-selector"4.参数格式不匹配"-Wformat"5.废弃掉的方法声明"-Wdeprecated-declarations"6.废弃掉的方法实现"-Wdeprecated-declarations"7.不会执行的代码"-Wunreachable-code"8.忽略在arc 环境下performSelector产生的 leaks 的警告 "-Warc-performSelector-leaks"9.忽略类别方法覆盖的警告 "-Wobjc-protocol-method-implementation"(修复开源库bug,覆盖开源库方法时会用到)
1. 使用Xcode设置关闭警告
Xcode内置了消除警告的设置,我们可以通过Xcode的设置来全局消除所有的警告.可以按照以下步骤操作:
选中对应的;在中选择Build ;在二级选择框中All;在搜索框中输入 flags,或者直接在列表中查找Apple Clang-Flags;在OtherFlags中,设置对应的警告消除标识:可以根据Debug和模式分别设置,也可以对两种模式同时进行设置.需要注意的是,Xcode设置时与上述定义的有所不同,需要添加"no-",例如消除无用变量警告-Wno--.
但是这种全局消除警告的方式并不安全,容易掩盖真正的警告代码,有可能会使一些严重的异常不能被及时发现,所以要慎用.
2. 使用#命令
在iOS#不仅可以对方法进行分区便于查找,还可以对警告进行忽略处理,使Xcode并再对其所定义的范围进行警告检测.忽略单个警告可以使用# clangpush/pop,指定需要忽略警告的类型,并将需要忽略警告的代码写在push/pop之间:
#pragma clang diagnostic push#pragma clang diagnostic ignored "对应的警告类型??"//The warnings should be ignored here #pragma clang diagnostic pop
例如,我们需要忽略未使用的变量的警告,则可以通过以下方式实现:
#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wunused-variable"Studen *stu = [[Studen alloc] init];#pragma clang diagnostic pop
这样代码段中的未使用变量在编译时就不会再出现警告.
也可以在预编译时,使用具备更大作用范围的头文件中包含?# clang“警告名称”
【忽略代码中的警告】如果剔除了push与pop则后面所有的代码都具有强制消除警告作用.