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

1.最直接,最一劳永逸,最安全的方式,直接找到警告的那段代码,改为不警告.这个方式,最安全.
但是它有一个问题,就是,当我们非常多文件都有这样的类型的警告的时候,我们就须要修改非常多非常多的源代码了, 对于不是我们写的源代码,有可能随时会更新的,我们这样的方式,显然就不太可取了.

2.使用编译器提供的宏来操作,这个方式在我们的project中会大量的看到
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wdeprecated-declarations"
               //写在这个中间的代码,都不会被编译器提示-Wdeprecated-declarations类型的警告
dispatch_queue_tcurrentQueue =dispatch_get_current_queue();
#pragma clang diagnostic pop

这种方式的问题,同第一个几乎相同,也是要修改源码的实现的,对于第三方,我们肯定是不想修改它的,尤其是一些更新非常频繁的第三方,一般警告出现后不久,作者就更新了,我们在此做这种操作,就显得浪费了.而且在 加入arm64支持的时候,一下出现几百个某种类型的警告,改起来也是相当费时费力的啊!
比方我们的project,打开了arm64,然后编译



3.关闭某一个指定文件的某种指定类型的警告
这里,拿一个详细project来说吧.比方我们project里有一个文件  PresencePacket


事实上关闭某个指定文件的某种类型的警告非常easy,就如同我们曾经给某一个文件加入 ARC支持或者不支持的时候那样 加入 忽略/显示 某种类型警告

双击 文件, 在当中加入  -Wno-shorten-64-to-32  (这个关键在就是让编译器忽略 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int') 警告)

加入完毕后,再编译,那么PresencePacket文件里的  Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int’) 警告就没有了,是不是非常easy,非常方便.



这样的方式,已经是大大的降低了工作量了,仅仅须要在指定的文件的编译中加入 -Wno-shorten-64-to-32就能够了.那么有没有什么方式能够让编译器忽略整个project中的 指定类型的警告呢?

4.关闭project中指定 类型的警告
这个最简单了, project的target有一个 Other Warning Flags 

在当中加入 -Wno-shorten-64-to-32

再又一次编译,哈哈,整个文件里的  Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int’) 警告所有消失了!!!!


5.大家可能非常疑惑,上面的-Wno-shorten-64-to-32 是怎么来的,我怎么知道   Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32_t' (aka 'int’) 警告 就是 -Wno-shorten-64-to-32类型呢?这里,事实上不须要记忆的,当project中有这样的类型警告的时候

在警告窗体,某个警告上,我们右击,显示出右键菜单,选择当中的 Reveal in Log


则会显示 

注意到当中 [-Wshorten-64-to-32],在这个括号里的就是 这样的警告的类型   -W是前缀,这个前缀表示的是 打开这样的类型的警告 假设我们是要关闭某种类型的警告的话, 要将 -W换成 -Wno-  
这样就得到了  -Wno-shorten-64-to-32了.



后记:
对于我们使用cocoapod引入的第三方,我们能够在podfile文件里 添加一句 
inhibit_all_warnings! 来要pod的project不显示不论什么警告,
比如
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'

还有就是,上面的方法也适合其他类型的警告!!!

參考

怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32的更多相关文章

  1. (转)怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

    问题描述  在我们的项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多多的警告,那么我们有 ...

  2. 怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32

    unsigned long numComponents = CGColorGetNumberOfComponents([[UIColor blackColor] CGColor]); 2014年12月 ...

  3. 怎么去掉Xcode工程中的某种类型的警告

    XCode警告   问题描述  在我们的项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多 ...

  4. Xcode去除某种类型的警告

      首先来看下当有警告时,怎么找到警告类型,在某条警告上,右键—>Reveal in Log     下面 [ ] 中间就是警告信息     去除警告信息的几种方式:   一.使用编译器提供的宏 ...

  5. PostgreSQL查询数据库中包含某种类型的表有哪些

    and c.relnamespace = n.oid and nspname = 'public' and a.atttypid = t.oid and typname = 'TEXT' and c. ...

  6. UNIX中的文件类型

    Unix的文件类型信息包含在stat结构的st_mode成员中可以用宏确定文件类型: 普通文件(S_ISREG()):包含某种形式数据的常用文件类型 目录文件(S_ISDIR()):这种文件包含其他文 ...

  7. 命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)

    今天,在.net4.5,mvc4下新建了个区域,运行起来就报这个错误: 命名空间"System.Web"中不存在类型或命名空间名称"Optimization"( ...

  8. Rails中的MIME类型

    layout title date comments categories post rails的中的MIME类型 2014-09-08 21:40 true ruby Rails开发中经常使用不同的 ...

  9. linux下删除目录及其子目录下某种类型文件

    Linux下,如果想要删除目录及其子目录下某种类型文件,比如说所有的txt文件,则可以使用下面的命令: find . -name "*.txt" -type f -print -e ...

随机推荐

  1. sum of powers

    题意: 考虑所有的可重集{a1,a2,a3....ak} 满足a1+a2+....+ak=n,求所有a1^m+a2^m+a3^m的和 n,m,k<=5000 题解: part1: 考虑f[i][ ...

  2. BZOJ1177 [Apio2009]Oil 二维前缀和 二维前缀最值

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1177 题意概括 在一个n*m的矩阵中,每一个位置一个数字. 现在让你选出3个k*k的矩阵,它们互不 ...

  3. JdbcType类型和Java类型的对应关系

    在Oracle中有些字段不是必填时在用户使用的时候会出现数据null的情况.这个时候在Oracle中是无法进行插入的. JDBC Type Java Type CHAR String VARCHAR ...

  4. Android 之 tools:context和tools:ignore两个属性的作用

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  5. pygame游戏开发入门例子

    # *_* coding:utf-8 *_* # 开发团队:中国软件开发团队# 开发人员:Administrator# 开发时间:2019/3/23 11:16# 文件名称:pygame_demo# ...

  6. POJ2417 Discrete Logging【BSGS】(模板题)

    <题目链接> 题目大意: P是素数,然后分别给你P,B,N三个数,然你求出满足这个式子的L的最小值 : BL== N (mod P). 解题分析: 这题是bsgs算法的模板题. #incl ...

  7. IdentityServer4-客户端的授权模式原理分析(三)

    在学习其他应用场景前,需要了解几个客户端的授权模式.首先了解下本节使用的几个名词        Resource Owner:资源拥有者,文中称“user”:        Client为第三方客户端 ...

  8. Alpha冲刺随笔五:第五天

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(十天冲刺) 团队名称:葫芦娃队 作业目标:在十天冲刺里对每天的任务进行总结. 随笔汇总:https://www.cnblogs ...

  9. AGC027 A - Candy Distribution Again

    目录 题目链接 题解 代码 题目链接 AGC027 A - Candy Distribution Again 题解 贪心即可 代码 #include<cstdio> #include< ...

  10. 洛谷.4008.[NOI2003]editor文本编辑器(块状链表)

    题目链接 st(n)表示sqrt(n) 为使块状链表不会退化,通常将每块的大小S维持在[st(n)/2,2st(n)]中,这样块数C也一定[st(n)/2,2st(n)]中 在此使用另一种方法(方便) ...