关于执行Analyze静态分析一些相关问题

 说明

使用Xcode自带的静态分析工具可以找出代码潜在错误,如内存泄露,未使用函数和变量等

缺点:静态内存分析由于是编译器根据代码进行的判断, 做出的判断不一定会准确, 因此如果遇到提示, 应该去结合代码上文检查一下。

总结: 静态分析一般用于定位内存泄露,未使用的变量与函数,空指针等。一般内存泄漏等问题建议使用动态分析,这里只讲静态分析(Analyze)。

 使用方法:

Analyze(静态分析以两种方式呈现,可根据个人爱好选择)

<1> 手动静态分析

工具栏 Product->Analyze(快捷键command+shift+B)

ps:每次分析都要执行一次

<2> 自动静态分析

在TARGETS -> Build Settings 搜索(static analysis) 将Analyze During 'Build' 改为Yes(见图1)

ps:每次编译时都会进行静态分析

图1

遇到的问题:

<1> user-facing text should use localizedstringmacro

面向用户的文本应该使用本地化的字符串宏


解决

在TARGETS -> Build Settings 搜索(missing localizability) 将missing localizability 改为No(见图2)

图2


<2> Converting a pointer value of type 'NSNumber *' to a primitive boolean value;instead,either compare the pointer to nil or call -boolValue

将类型为“NSNumber *”的指针值转换为原始布尔值;相反,要么将指针比较为nil,要么调用-布尔值

解决

根据提示有两种修改方式

1.判断numbers是否等于nil   ps:number != nil ;

2.bumber.boolValue

虽然这两种修改方式都能解决问题,但不完全一样,要注意其中的差别,选择需要的使用!


<3> Value stored to 'imagePickerController' during its initialization is never read

意思为imagePickerController这个对象初始化未被用到...因为imagePickerController对象在第一行被init后再第二行又被init一次继而从新开辟了内存!

图3

解决

将初始化合并既可!


<4> Assigned value is garbage or undefined

声明变量的时候没有进行初始化工作

解决

为变量初始化

你可能感兴趣的:(关于执行Analyze静态分析一些相关问题)