忽略Xcode中的警告

 在iOS开发中,我们不可避免的会遇到各种类型的警告,有些警告需要解决,但有些警告是我们知道但不是必须要解决的(比如为了兼容旧版本而使用的新版被废弃的API等)。

 但是作为一个有强迫症的开发者,警告当然是能处理就一定要处理,因此我们需要手动屏蔽掉Xcode的相关警告。

 常见的警告主要存在以下几类:

1、源代码文件中的警告
2、CocoaPods中的警告
3、说明类文件的警告

下面我们就分别来处理对应类型的警告:

一、忽略源代码文件中的警告

1、使用Xcode的提供的宏来处理单个警告

#pragma clang diagnostic push
#pragma clang diagnostic ignored "警告名称"
#pragma clang diagnostic pop

 只要将警告名称修改成对应的类型,即可以忽略相关的警告。

 一般来说,我们Command+B后Xcode都会提示警告,此时找到你想要处理的警告,如下所示:


图1

 如果你已经知道了警告类型名,则直接使用上面提到的宏来包裹这段代码即可,倘若不知道对应的警告类型名,则右键刚刚选中的警告:


图2

 选择Reveal in Log,然后就会得到如下的信息,其中红框中的名字,即是你要找的警告名称。


图3

 此时你定位到提示警告的代码后,将刚刚的警告名粘贴进去,即可以去掉该警告


图4

  温馨提示:如果Reveal in Log不可点击或者点击无效,可以重新编译或者重启下Xcode
 常见的警告类型有:

1, 声明变量未使用  "-Wunused-variable"
2, 方法定义未实现  "-Wincomplete-implementation"
3, 未声明的选择器  "-Wundeclared-selector"
4, 参数格式不匹配  "-Wformat"
5, 废弃掉的方法    "-Wdeprecated-declarations"
6, 不会执行的代码  "-Wunreachable-code"
7, 指针类型不匹配  "-Wincompatible-pointer-types"
8, 没有实现已声明的方法 "-Wincomplete-implementation"
9, -没有实现协议的方法"  "-Wprotocol"
10, 尚未声明的函数(通常指c函数) "-Wimplicit-function-declaration"
11, 使用performSelector可能会出现泄漏 "-Warc-performSelector-leaks"
...

2、使用Xcode配置属性来处理单个文件警告

 有时候同一个文件中有多个同类型的警告,倘若使用上面的方法,我们可能需要大量的修改源代码,这样不仅影响代码整洁,而且非常的繁琐,此时我们就有忽略特定文件的警告的需求。
相信做过MRC和ARC的兼容开发的同学一定知道-fno-objc-arc这个指定,这是用来给特定文件关闭ARC功能指定,同理,我们可以使用类似方法来处理忽略特定文件的警告。

 举个栗子,同一个文件中存在调用多个当前版本已经deprecated方法。(为了简单,此处全部写同一个且在同一处。)


图5

 为了忽略文件中的所有警告,我们可以在Xcode的Compile Sources中找到对应的文件,并为其添加需要忽略的警告名,重新编译即可发现对应的警告消失了。
需要注意的是,这里的警告名输入规则是将使用Xcode的提供的宏来处理单个警告中获得的警告名开头W后加上no-。(如-Wdeprecated-declarations需要变成-Wno-deprecated-declarations

图6

3、使用Xcode配置属性来处理全局同类型警告

 Xcode拥有强大的配置功能, 我们在Xcode中一样可以设置忽略警告。
参考上面的列子,我们需要忽略该警告,则可以选中PROJECT中的Build Settings选项,从里面定位到Other Warning Flags,输入对应的忽略警告名即可。
需要注意的是,这里的警告名输入规则同使用Xcode配置属性来处理单个文件警告

图7

二、忽略CocoaPods中的警告

 iOS项目中大量采用CocoaPods来管理第三方库,因此第三方库警告成为很多项目中最多最无解的存在。
 为了解决这个问题,其实CocoaPods提供了非常简单方法来供我们选择,我们只需要在我们的Podfile文件中加上一句inhibit_all_warnings就可以解决所有的问题。

图8

三、忽略说明类文件的警告

 有时候我们会在项目中加入.md/.txt这类文件来说明我们项目中的一些注意事项,如果这些文件存在警告,可以将这些文件从Xcode的Compile Sources中删除。如下图所示:

图9

参考:
谈谈Objective-C的警告
去掉Xcode工程中的特定类型警告

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

推荐阅读更多精彩内容

  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 4,604评论 0 12
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 项目组件化、平台化是技术公司的共同目标,越来越多的技术公司推崇使用pod管理第三方库以及私有组件,一方面使项目架构...
    swu_luo阅读 22,513评论 0 39
  • 内容来自阿朱公众号 一、大财务管理产品线 1、总账(员工层)、合并报表(Leader层)、财务共享中心(总监层) ...
    kafkaliu阅读 742评论 0 5
  • 对一段青春的纪念,过往的那些回忆,总是那么美好,越是美好,越是怀念,越怀念越是深刻,身在其中便以为握在手中,永远不...
    岁月如风陌开花阅读 363评论 0 0