iOS 开发去除 CocoaPods 警告(Fix Xcode Warning)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongfengkt/article/details/82626147

前言

在iOS开发中,通常我们会使用很多第三方代码(轮子),而一般我们会选择使用CocoaPods来管理这个库。然后有些库作者已经停止更新或者更新并没有那么即使,当SDK升级或者编译器升级以后,这些遗留代码会出现很多警告。每次便宜项目看到这个多警告实在是很不爽。

关闭CocoaPods中的警告

在Podfile中加入 inhibit_all_warnings!即可

platform :ios, '9.0'
inhibit_all_warnings!

关闭文档警告

pod install 后发现警告少了,但是还是有一些警告。 如下图

因为从 Xcode8.0 开始,引入了文档注释的警告 。
解决方法关掉Pods的文档警告
Pods -> Build Settings -> Documentation Comments -> NO

关闭单个库警告

command + B 编译一下,文档警告没有了,美滋滋。
然后发现不对,怎么pods中还有警告

这个应该算是 Xcode9 的“新特性”吧,从 Xcode9 开始我们定义一个不带参数的block
typedef void(^TestBlock)();
会显示警告This block declaration is not a prototype
直接点击Fix typedef void(^TestBlock)(void); 即可
Or

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wstrict-prototypes"
typedef void(^TestBlock)();
#pragma clang diagnostic pop

来忽略警告

对于自己的项目代码,肯定是每个 warning 都 fix 掉,按照官方推荐写法来 coding ,然后对于第三方库来说,要改动的地方太多了,这种方法不太合适。
下面介绍一种一劳永逸的方法。
Pods -> target -> Other Warning Flags 添加 -w

注意:是小写w,如果是大写的W则是显示所有警告。

同样可以直接修改 Pods 整个 Project 的 Other Warning Flags 关闭所有第三方库的警告。

关闭单个文件警告

此方法同样适用于项目中关闭单个文件的 warning
target -> Build Phases -> Compile Source 找到相关文件,在后面加入-w

关闭整个工程的相关警告

不过并不推荐直接关闭文件或者整个项目的 warning ,warning有助于定位问题,能改掉的 warning 还是尽量修改。

关闭局部警告方法

上面有提到使用#pragma clang diagnostic ignored "警告名称" 来消除警告
#pragma 本质上是声明,我们通常用来注释。而他的另一个强大功能就是处理编译器警告
clang diagnostic 就是 #pragma的一个常用命令

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-warning name"
// your code
#pragma clang diagnostic pop

那么我们怎么找到这个 warning name 呢?
选中广告右击显示菜单,选则 Reveal in Log

如图,中括号中的 -Wstrict-prototypes 就是 warning name

常用的警告名称

#pragma clang diagnostic ignored "-Wunused-variable" 未使用的变量
#pragma clang diagnostic ignored "-Warc-retain-cycles" retain cycle
#pragma clang diagnostic ignored "-Wdeprecated-declarations" 方法弃用警告
#pragma clang diagnostic ignored "-Wincompatible-pointer-types" 不兼容的指针类型

猜你喜欢

转载自blog.csdn.net/hongfengkt/article/details/82626147
今日推荐