最近项目做完了,开始进行优化,第一件事就是消除编译警告。编译警告虽然不会导致项目崩溃,但是看着烦。一边消除一边记录下。
1、属性声明问题
源代码长这个样子:
@property (nonatomic) id value;
很明显是缺省属性声明的问题,警报的意思就是说:没有明确的指明这个属性是assign
,retain
,还是copy
,现在编译器默认这是 assign
类型的,但这对于id
这种non-GC
类型的变量不适用。查看下这里代码的需求,发现这个地方应该用strong
,添加上strong
属性后,警告消失。
2、类型转换的姿势不对
可以使用Xcode提示的那样进行修改,但建议把前面的格式化符号改为 %zd
,即是这个样子:
NSString *str = [NSString stringWithFormat:@"%zd", i];
这样表示一个size_t
值(sizeof
返回的类型),而不是强制转换,就不会存在丢失精度什么问题了。(个人的理解,如果不对,望指正)
3、方法的返回的类型,与方法定义的类型不一致。如是枚举型,但定义的时候定义的是NSUInteger
将返回值类型修改为枚举型即可。
4、.h
中声明方法的参数类型和.m
实现时方法的参数类型不一致
这是个非常蠢的问题,统一一下就好了。
5、README,LICENCE,gitkeep文件不能编译的警告,像是这个样子:
删掉对应文件就好了。
6、百度地图的警告
警告提示的是百度 BaiduMapAPI.framework
框架里面使用雷达的几个类支持的最低系统版本是 iOS8.2,而我门开发的App是从 iOS7 开始适配的,暂时道行不够,这个几个警告表示无可奈何。(如果你有解决方案,还请告知,感激不尽)
7、参数类型传错了
这里需要一个 BOOL
类型,但是传了一个控制器类型的,竟然没有崩溃😂,醉了。
8、使用了已经被弃用的 API
解决方案:换成提示让使用的 API。
这次解决编译警告遇到的问题就这么多,以后如果再遇见其它的,再添加。
下篇见~