处理iOS开发中的一些常见警告

    在开发过程中,开发人员应该把每一个警告当做一个bug来对待,xcode8升级后,对类型上的要求又高了许多,很多警告是因为赋值的类型不同引起的,虽然不清楚是否会对正常运行造成影响,不过为了处理掉,还是老老实实的转化类型.让类型一致,解决掉这一类bug并没有太大的问题,不过一些char ,long ,long long ,int , NSInteger类型间的转换需要严谨一些.具体要去查一下各自对应的范围,百度有很多.

正真让人感觉烦恼的是一些编译器的报警.大致总结一下:

一. 工程中删除文件后的missing file警告:

首先是删除文件的时候一定要在工程先移除引用,然后再从Finder中删除该文件.

出现警告时:用终端命令进入missing file的目录,然后运行命令:

1.svn delete file.cpp  或者  git rm file.cpp,

2.开启隐藏目录,把工程下的.svn删除掉,

3.进入工程目录下,运行命令 find . -name .svn -exec rm -rf { } \;  删除工程中的隐藏文件.

三种方式多试几次,如果还不行,找到你删除的文件,再次拖入工程中,不要勾选copy,然后clean一下,再从工程中移除此文件...

二. 项目中c++混编的文件,编译器的设置:

1.一些三方库中经常会有c++混编的.mm的文件,有时候导入后一直在库里报错,你说改别人库的代码吧,又没那么容易,总之这个问题很烦很烦,之前我的老项目中一直没办法使用SDWebImage,还有MJRefresh这些常用的三方,写什么都要用原生,后来仔细琢磨了下,我的思路是,把这些.mm文件中报错的地方oc的写法改一改,改成c或者c++的写法,然后在编译器设置里把.mm文件的编译源设置为根据文件选择.

2.具体就是在Build Settings下的 Apple LLVM 8.0 - Language 中找到Compile Sources As 中,选择According To File Type.

3.网上也有人说直接改为Objective - C++,这种应该大多数情况下足够用了...但是如果不行的话,还是试试上一种方法吧.

三. 工程中的Linker command faile with exit code 1 的警告

1.大多数情况下是新导入了三方库文件路径不对的问题,在 Build settings->Linking->Other Linker Flags下添加-ObjC,编译试一下,如果不行,就添加-all_load,这个是针对所有的文件的,一般情况下用-ObjC能解决的就不要用这个.

2.如果新导入的库中有.a文件导致这个警告的话,在Build settings->Search Path->Library Search Paths  添加静态库的相应路径,用$(PROJECT_DIR)或者$(SRCROOT),这两个含义不一样,前者是表示整个项目,后者是项目的根目录.个人建议用$(PROJECT_DIR).网上还有人说删掉这里面原来的就好了.没试过,可以试下.

3.有时候pch文件经常出现这个情况,解决方法是在Prefix Header中用$(SRCROOT)写pch文件的路径

四.工程中的 No such file or directory 警告

1.这个具体是因为什么引起的现在还不太清楚,同样也是三方库的文件或者路径的问题,解决方法是,在Build settings->Linking->Other Linker Flags下添加-W.

2.如果没有用,在 Build settings->Build Options->Debug Information Format中改为DWARF,两种方法都试试,或者同时添加下试试.网上有人说这种方法打包的时候会出问题,见下一方法.

3.不使用上一个方法,在Build settings->Apple LLVM 8.0 -Code Generation ->Generate Debug Symbol的值设为NO

注:关于这个问题,我只是处理了,没有仔细的研究.

参考链接:http://blog.sina.com.cn/s/blog_44174f2301014425.html

五. 关于xib的警告,这里不提是约束造成的警告,约束的警告请自行处理...

具体的警告没有记录,处理方式是打开xib,在右侧Interface Builder Document->Builds for中选择Deployment Target.

六. 代码中一些方法弃用,变量没有使用,以及提示方法永远不会被执行等其他警告

用#pragma 预处理指令消除.

代码如下:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-相关命令"
    //这里放你自己的报警告的那段代码
#pragma clang diagnostic pop

 

关于#pragma相关,参考:http://nshipster.cn/pragma/

相关指令请参考:http://www.itnose.net/detail/6126304.html
 

 

 

转载于:https://my.oschina.net/u/2555813/blog/758077

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值