Analyze静态分析所出现的问题总结
前言
使用Xcode自带的静态分析工具 Product->Analyze(快捷键command+shift+B)可以找出代码潜在错误,如内存泄露,未使用函数和变量等
所谓静态内存分析, 是指在程序没运行的时候, 通过工具对代码直接进行分析根据代码的上下文的语法结构, 让编译器分析内存情况, 检查是否有内存泄露
Analyze主要分析以下四种问题:
1、逻辑错误:访问空指针或未初始化的变量等;
2、内存管理错误:如内存泄漏等; 比如ARC下,内存管理不包括core foundation
3、声明错误:从未使用过的变量;
4、Api调用错误:未包含使用的库和框架。缺点: 静态内存分析由于是编译器根据代码进行的判断, 做出的判断不一定会准确, 因此如果遇到提示, 应该去结合代码上文检查一下
错误实例
1、nil returned from a method that is expected to return a non-null value
方法返回中需要一个对象(指针),你返回了一个空指针.例如,下图在UITableView的数据源回调方法返回cell的方法中,本应返回一个UITableViewCell对象,可是这里返回了一个nil对象(空指针)
2、Value stored to "xxx"is never read
alertImageURL这个变量没有被使用,在当前类中搜索alertImageURL这个变量发现只是被赋值并没有被使用。
解除这个提示:删除或者注视这行代码OK;
3、nstance variable used while ‘self’ is not set to the result of '[(super or self) init…]
-(id) init
{
if(![super init])
{
return nil;
}
//todo
return self
}
修改以后
-(id) init
{
self = [super init];
if(!self)
{
return nil;
}
//todo
return self
}
4、Dictionary value cannot be nil
字典里的元素没有初始化,indexStr直接初始化就行
NSString *indexStr = [[NSString alloc]init];