通过Xcode自带的分析工具进行代码检测
Xcodebuild Analyze
直接通过xcode菜单Product→Analyze来进行分析,执行之前最好clean下Command+Shift+K
Analyze主要分析以下四种问题:
- 逻辑错误:访问空指针或未初始化的变量等;
- 内存管理错误:如内存泄漏等; 比如ARC下,内存管理不包括core foundation
- 声明错误:从未使用过的变量
- Api调用错误:未包含使用的库和框架
以下是在大型项目中分析出问题的所在:
- 局部变量声明后没有设置初始值,在Debug模式下可能没问题,在Release模式下该变量会被赋值垃圾
- 调用Block函数没有做非空判断,就直接调用,有可能导致崩溃
- 声明的属性中用copy修饰可变的类型,是最不应该出现的问题
- 声明的API参数(返回值,形参)都标识可空或不可空,这样预编译下,编译器就没有给出警告提示;在API内部实现应该做判空处理,隐患比较低
- 局部变量声明后并且初始化了,在接下来的逻辑里该变量一定会被重新被赋值,在被重新赋值期间该已初始化的变量是没有被使用到的,也就是说开辟了两段内存空间,造成短时间内存泄漏
- 局部变量被初始化了,也有被重新赋值,但是在该作用域内没有被读取,也就是说开辟内存不用造成短暂的内存泄漏
- 局部变量被初始化了,完全没有被使用到,也会造成短暂的内存泄漏
- 重写系统的方法没有调用super,可能存在功能不完整问题
- Core Foundation/C 手动创建出来的对象没有手动释放内存,造成内存泄漏
- 构造函数中存在错误的方式类实例
网友评论