静态分析
分类:金沙APP

never read(分配了有空内部存款和储蓄器)

那是因为[NSMutableArray array]初阶化分配了内部存款和储蓄器,而判别语句里面arrayWithArray:主意也一定于伊始化分配了内部存款和储蓄器,就是把起首化的叁个新的可变数组赋值给前面早就开始化过的可变数组,看似没什么大主题材料,其实存在二个数目源却申请了两块内部存款和储蓄器的难点,已经产生了内部存款和储蓄器走漏。

缓慢解决难点:

① 去掉从前的早先化,只做表明:

NSMutableArray *defaultImageNames;
NSMutableArray *defaultImages;

② 推断语句里面不行使起初化方法,只增加数组对象:

[defaultImageNames addObjectsFromArray:@[@"cmcc_normal",@"cmcc_normal",@"cmcc_normal",@"cmcc_normal"]];

[defaultImageNames addObjectsFromArray:@[[UIImage imageNamed:@"cmcc_normal"],[UIImage imageNamed:@"cmcc_normal"],[UIImage imageNamed:@"cmcc_normal"],[UIImage imageNamed:@"cmcc_normal"]]];

garbage value(垃圾值)

左边操作对象是垃圾值,检查是因为只证明了变量:NSInteger endTime;赋值是在认清语句中赋值的,存在并未赋值的动静,只供给赋初值就足以了:

NSInteger endTime = 0;

这段时间利用Analyzecommand+shift+B对App举办静态解析,蒙受二种情形:

Null passed to a callee that requires a non-null 1st parameter(Null赋值给非空对象)

那是由于Null赋值给non-null对象。实际情况参见:会报编写翻译器警告的Xcode 6.3新特点:Nullability Annotations

从地点代码可以见到:由于大意,判定语句的else内部并不曾给filePath赋值,所以才会冒出Null。只需赋值给filePath金沙APP,就好了:

filePath = [documentsPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.jpg",@(self.itemIndex)]];

Potential leak of an object stored into 'XX'(存在潜在的内部存款和储蓄器败露)

虽说是在ARC情势下,但不是什么样事物都足以自由,举个例子上述的C-types对象,都必要手动来进展自由,所以地点的难点只需手动释放就可以了:

CFRelease(phoneNumbers);
CFRelease(anFullName);

里头还应时而生过一回那样的荒唐:Null pointer argument in call to CFRelease,意思是空指针参数调用CFRelease,细心一看原本写错地点了,必供给留意这种情状,非常出现有的循环语句的时候。

至于ARC情势下有哪些是内需手动释放的啊?就本人所知,CoreFoundation目的不经常候要求CFReleasemalloc/calloc等一时候供给free,还会有标准IO fopen等等的必要fclose

本文由金沙APP发布于金沙APP,转载请注明出处:静态分析

上一篇:零基础英语学习者快速入门小指南 下一篇:最快速完成注册
猜你喜欢
热门排行
精彩图文