随着项目的慢慢发展,工程中的警告数量可能越来越多。这些警告有的是我们自己写出来的,有的来自第三方代码,下面以一个64位转32位损失精度的警告为例来说明如何处理警告。

产生警告的代码片段

long long i64 = 0x0000F000;int i32 = i64;NSLog(@"-------->%d", i32);

方法一:通过完善代码处理警告

对于如上的警告类型,程序员需要确定转换时是否会损失精度,

如果不会损失精度,直接强制类型转换:

long long i64 = 0x0000F000;int i32 = (int)i64;NSLog(@"-------->%d", i32);

如果会损失精度,改变变量类型:

long long i64 = 0x0000F000;long long i32 = i64;NSLog(@"-------->%lld", i32);

这种处理警告的方法主要适用于我们自己编写的代码,即:我们要知道自己写的是什么。

方法二:通过编译指示符忽略警告

1
2
3
4
5
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
    //写在这个中间的代码,都不会被编译器提示-Wdeprecated-declarations类型的警告
dispatch_queue_tcurrentQueue =dispatch_get_current_queue();
#pragma clang diagnostic pop
long long i64 = 0x0000F000;#pragma clang diagnostic push#pragma clang diagnostic ignored "-Wshorten-64-to-32"int i32 = i64;#pragma clang diagnostic pop

使用这种方法可以在源文件的某个部分忽略警告。

方法三:通过宏控制忽略编译警告

定义宏:

#define DiscardLostPrecisionWarning(CodeBlock) /do { /_Pragma("clang diagnostic push") /_Pragma("clang diagnostic ignored /"-Wshorten-64-to-32/"") /CodeBlock; /_Pragma("clang diagnostic pop") /} while (0)

使用宏:

int i32 = 0;DiscardLostPrecisionWarning(i32 = i64);

方法四:忽略指定文件的编译警告

在 Build Phases 中为指定文件增加编译参数:-Wno-shorten-64-to-32,如下图:

这种方法可以在不修改源码的情况下忽略文件中某种类型的警告,主要适用于以源码形式引入的第三方库。

方法五:忽略指定Target的编译警告

在 Target –> Build Settings -> Custom Complier Flags -> Other Warning Flags 中增加 -Wno-shorten-64-to-32,如下图:

这种方法可以在不修改源码的情况下忽略Target中某种类型的警告。

方法六:忽略工程的编译警告

在工程中忽略警告的方法与在 Target 中忽略警告的方法类似,但是可以控制工程中的所有 Target,前提是:Target要继承 Project 的编译设置,设置继承的方法见下图:

即增加:$(inherited)。

然后设置工程的Build Settings -> Custom Complier Flags -> Other Warning Flags 中增加 -Wno-shorten-64-to-32,如下图:

然后到 Target 中可以看到编译设置为:

注意:编译设置没有使用加粗字体,说明是继承来的。

后记:

对于我们使用cocoapod引入的第三方,我们可以在podfile文件中 增加一句  inhibit_all_warnings! 来要pod的工程不显示任何警告,例如

1
2
3
4
5
6
7
8
9
10
11
12
13
link_with 'SecondHouseBrokerAPP','SecondHouseBrokerCOM'
platform :ios,'6.0'
inhibit_all_warnings!
 
 
pod 'CocoaAsyncSocket'
pod 'Reachability'
pod 'ProtobufObjC'
pod 'SDWebImage'
pod 'FMDB'
pod 'GPUImage'
pod 'CXPhotoBrowser'
pod 'CocoaLumberjack'

转载于:https://www.cnblogs.com/cynthia116/p/4859313.html

怎么去掉Xcode工程中的某种类型的警告相关推荐

  1. 使用svn删除Xcode工程中的文件

    这个问题困扰我好久,一直觉得删除受svn管理的文件就是一个梦魇. 今天同学遇到一个文件重复定义的问题,导致整个工程无法编译,解决的办法是删除之前重复定义的文件,使用自己的命名规则来命名一个新的文件. ...

  2. Unity打包iOS自动拷贝1024图标到xcode工程中(上架AppStore需要设置1024*1024图标)

    前言 我们如果需要打iOS上架AppStore,则需要拷贝一张1024*1024的高清图标(不含alpha通道)到XCode工程中(目录:Unity-iPhone/Images.xcassets/Ap ...

  3. ios之Xcode工程中添加文件常用快捷键

    1.Xcode某个工程中添加文件 有两种方式: 方式一:"command"+"n",弹出添加文件对话框. 方式二:在需要添加文件的工程目录下右键,选择" ...

  4. 检测xcode工程中配置信息是否正确

    一.解决问题:在某些情况下,xcode工程的配置信息没太注意,导致编译的应用程序不正确:通过脚本,可以放在自动构建中,可以自动检测 配置哪里出了问题. 二.感谢: 张晓 三.脚本如下: #!/bin/ ...

  5. 在XCode工程中创建bundle文件

    在ios开发中为了方便管理资源文件,可以使用bundle的方式来进行管理,类似于ArcGIS Runtime for iOS中的ArcGIS.bundle . 切记目前iOS中只允许使用bundle管 ...

  6. 去掉 Android工程中让人很不爽的“黄色警告”

    一:问题   二:解决方法 (1)选择android工程,右键Android Tools -> Clear Lint Markers 这种方式能够清除android工程里面的所有警告信息,但很遗 ...

  7. TS中限制某种类型的传递

    type NameType<T, A> = T extends A ? never : T;function name1<T>(x: NameType<T, number ...

  8. 去掉SDI工程中CView的白色边框

    场景: 例如你需要CView融入你的UI界面, 你会发现除了OnPaint或者OnDraw绘制之外, CView的边框也需要处理. 方法一. 需要分别在CMainFrame和CView的派生类的OnC ...

  9. STM32 Keil工程中使用abs函数报警告 warning: #223-D: function abs declared implicitly

    在头文件中包含#include <stdlib.h> 和#include在<math.h>即可消除警告.

最新文章

  1. rpython求随机数代码4段5个字符_如何创建一个4位数的随机数并将其存储为变量...
  2. 【NLP】FedNLP: 首个联邦学习赋能NLP的开源框架,NLP迈向分布式新时代
  3. python读excel 包含格式_python里读写excel等数据文件的几种常用方式
  4. 命名空间_python基础 13 类命名空间于对象、实例的命名空间,组合方法
  5. c++ set 遍历_47. Set 是如何工作的(3) 遍历顺序是如何确定的?
  6. 波士顿大学计算机专业世界排名,波士顿大学计算机工程专业大学排名业内最独到阐明...
  7. Spark笔记整理(一):spark单机安装部署、分布式集群与HA安装部署+spark源码编译...
  8. Ruby Numeric
  9. Git以及GithubDesktop配置ssh访问/下载/上传 详细步骤
  10. UOS国产操作系统_三方源
  11. 基于SSH的实验室设备管理系统mysql
  12. 通过网站端口攻击服务器,服务器被攻击怎么解决?从端口策略入手
  13. 浅谈快速沃尔什变换(FWT)快速莫比乌斯变换(FMT)
  14. 小程序内关注微信公众号的几种方式
  15. java捕鱼设计_JAVA毕业设计教程:用swing实现捕鱼达人代码教程
  16. 安防市场视频监控比重大 并有新商机
  17. 数列极限的四则运算法则
  18. 上网的时候总是掉线?该如何处理
  19. 银行贷款与网上借贷比较
  20. 量子点、量子点发光、量子点屏幕究竟是什么?

热门文章

  1. ROS机器人程序设计(原书第2版)3.9.1 使用rqt_rviz在3D世界中实现数据可视化
  2. NOIp #2011
  3. Java中类的初始化顺序
  4. js: live和die,bind和unbind
  5. Vector的一种实现(一)
  6. Silverlight RIA Servcie 删除子对象实体提交错误的问题[解决]
  7. MongoDB 从节点 延迟的测试
  8. ORACLE 回收站管理
  9. Android 自定义view的知识梳理。
  10. flutter web:lottie jssdk报错处理