问题描写叙述 
在我们的项目中,通常使用了大量的第三方代码,这些代码可能非常复杂,我们不敢修改他们,但是作者已经停止更新了,当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. 存储过程,存储函数(Oracle)

    存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 存储过程和存储函数的区别? 存储函数:可以通过return 语句返回函数值. 存储过程:不能 除此之外我们可以认为 ...

  2. KNN分类算法补充

    KNN补充: 1.K值设定为多大? k太小,分类结果易受噪声点影响:k太大,近邻中又可能包含太多的其它类别的点. (对距离加权,可以降低k值设定的影响) k值通常是采用交叉检验来确定(以k=1为基准) ...

  3. 024 SpringMvc的异常处理

    一:说明 1.介绍 Springmvc提供HandlerExceptionResolver处理异常,包括Handler映射,数据绑定,以及目标方法执行. 2.几个接口的实现类 AnnotationMe ...

  4. 编译linux内核以及添加系统调用的全过程

    参考链接: https://www.zybuluo.com/hakureisino/note/514321# 北京邮电大学操作系统实验: https://wenku.baidu.com/view/6d ...

  5. Laravel 5 插入数据后返回主键ID

    方法一: $info = DB::table('表名')->insertGetId(['imgName' => $fileName]);//图片名入库后返回添加数据行的主键ID 方法二:( ...

  6. python中使用XPath笔记

    XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线. XPath介绍: ...

  7. 化学1(chem1)- 化学合成

    P2784 化学1(chem1)- 化学合成 还是spfa,距离数组初始化为-1,松弛操作改为*就好了,一开始老是超时,后来加了一个visit数组就过了,这个重复造成的效率浪费还是蛮大的,以后都要加. ...

  8. 仿win10环境变量助手

    相信很多人用过win10后再换回win7或者xp等系统都会有些不习惯,所以在这里安利一款博主自己开发的小软件:环境变量助手. 继承于Win10风格的环境变量,操作简单方便,使用时需要账户权限. 注意: ...

  9. BZOJ.1190.[HNOI2007]梦幻岛宝珠(分层背包DP)

    题目链接 把重量表示为\(a\times2^b\)的形式,然后按\(b\)排序. 从高到低枚举每一位,\(f[i]\)表示当前位容量为\(i\)时的最大价值(容量即\(a\times2^{bit}\) ...

  10. POJ.1655 Balancing Act POJ.3107 Godfather(树的重心)

    关于树的重心:百度百科 有关博客:http://blog.csdn.net/acdreamers/article/details/16905653 1.Balancing Act To POJ.165 ...