2018-01-23 消除项目中的警告,强迫症的福音

前言:先叨叨两句

在项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多多的警告,那么我们有没有办法去掉这些烦人的警告,不然一个工程几百个警告,你看着怎么都不爽吧。我们怎么去掉警告呢?

1. 最直接、最一劳永逸、最安全的方式,直接找到警告的那段代码,改为不警告。这个方式最安全。

可是它有一个问题,就是,当我们很多文件都有这种类型的警告的时候,我们就需要改动很多很多的源码了, 对于不是我们写的源码,有可能随时会更新的,我们这种方式,显然就不太可取了。

2. 使用编译器提供的宏来操作,这个方式在我们的工程中会大量的看到:

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wdeprecated-declarations"

    //写在这个中间的代码,都不会被编译器提示-Wdeprecated-declarations类型的警告

dispatch_queue_tcurrentQueue =dispatch_get_current_queue();

#pragma clang diagnostic pop

这种方式的问题,同第一个差不多,也是要修改源代码的实现的,对于第三方,我们肯定是不想改动它的,尤其是一些更新很频繁的第三方,一般警告出现后不久,作者就更新了,我们在此做这样的操作,就显得浪费了.并且在 添加arm64支持的时候,一下出现几百个某种类型的警告,改起来也是相当费时费力的啊!

下面开始操作:


比如项目中有这样的警告,选中要消除的警告,点击右键Reveal in  Log,查看,会看到这个页面


重点来了,红框标记的就是要消除警告的关键所在,如果我们是要关闭某种类型的警告的话, 要将 -W换成 -Wno-  ,比如-Wunguarded-availability改成-Wno-unguarded-availability,然后复制一下-Wno-unguarded-availability


把你copy 的-Wno-unguarded-availability粘贴到这里就行了,同样的方法,消除掉其他的警告,然后clean一下工程,重新运行


是不是警告全没了,惊不惊喜,意不意外,作为一个优秀的程序员,警告就是错误的时代,是不是又可以装一把!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容