消除Xcode编译警告

最近项目做完了,开始进行优化,第一件事就是消除编译警告。编译警告虽然不会导致项目崩溃,但是看着烦。一边消除一边记录下。

1、属性声明问题


源代码长这个样子:

@property (nonatomic) id value;

很明显是缺省属性声明的问题,警报的意思就是说:没有明确的指明这个属性是assignretain,还是copy,现在编译器默认这是 assign 类型的,但这对于id这种non-GC类型的变量不适用。查看下这里代码的需求,发现这个地方应该用strong,添加上strong属性后,警告消失。

2、类型转换的姿势不对


可以使用Xcode提示的那样进行修改,但建议把前面的格式化符号改为 %zd,即是这个样子:

NSString *str = [NSString stringWithFormat:@"%zd", i];

这样表示一个size_t值(sizeof返回的类型),而不是强制转换,就不会存在丢失精度什么问题了。(个人的理解,如果不对,望指正)

3、方法的返回的类型,与方法定义的类型不一致。如是枚举型,但定义的时候定义的是NSUInteger

消除Xcode编译警告_第1张图片

将返回值类型修改为枚举型即可。

4、.h 中声明方法的参数类型和.m实现时方法的参数类型不一致

这是个非常蠢的问题,统一一下就好了。

5、README,LICENCE,gitkeep文件不能编译的警告,像是这个样子:

删掉对应文件就好了。

6、百度地图的警告

警告提示的是百度 BaiduMapAPI.framework 框架里面使用雷达的几个类支持的最低系统版本是 iOS8.2,而我门开发的App是从 iOS7 开始适配的,暂时道行不够,这个几个警告表示无可奈何。(如果你有解决方案,还请告知,感激不尽)

7、参数类型传错了

这里需要一个 BOOL类型,但是传了一个控制器类型的,竟然没有崩溃,醉了。

8、使用了已经被弃用的 API

解决方案:换成提示让使用的 API。

这次解决编译警告遇到的问题就这么多,以后如果再遇见其它的,再添加。

下篇见~

你可能感兴趣的:(消除Xcode编译警告)