美文网首页iOS 开发
iOS 开发去除 CocoaPods 警告(Fix Xcode

iOS 开发去除 CocoaPods 警告(Fix Xcode

作者: 勤奋的笨老头 | 来源:发表于2018-09-11 15:01 被阅读141次

    前言

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

    关闭CocoaPods中的警告

    在Podfile中加入 inhibit_all_warnings!即可

    platform :ios, '9.0'
    inhibit_all_warnings!
    

    关闭文档警告

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

    image

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

    image

    关闭单个库警告

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

    image

    这个应该算是 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

    image

    <font color=#FF1493>注意:</font>是小写w,如果是大写的W则是显示所有警告。

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

    关闭单个文件警告

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

    关闭整个工程的相关警告

    image

    不过并不推荐直接关闭文件或者整个项目的 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

    image

    如图,中括号中的 -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" 不兼容的指针类型

    相关文章

      网友评论

        本文标题:iOS 开发去除 CocoaPods 警告(Fix Xcode

        本文链接:https://www.haomeiwen.com/subject/zrjugftx.html