Xcode Analyze 代码静态分析主要有以下作用:
内存泄漏(未释放的占内存的无用僵尸对象)
代码逻辑问题 (访问空指针或未初始化的变量等)
声明错误或无效数据及变量(从未使用过的变量等)
API调用错误(未包含使用的库和框架)
运行Xcode中Analyze方法 Product---->Analyze 分析后的以下几种状况:
1. 内存泄漏
情况1
提示信息: Potential leak of an object 问题出在62行处
点击双向箭头提示如下信息:
>1. Method returns an Objective-C object with a +1 retain count
alloc一个对象的时候,其内存计数(retain count)+1,
[[NSMutableString alloc] init]
->2.Object leaked: allocated object is not referenced later in this execution path and has a retain count of +1
因为content的setter方法会将object的内存计数+1,如下代码,content是retain属性。执行完L62代码后,self.content的内存计数就为 2
@property (nonatomic, retain) NSMutableString* content;

解决措施:修改为self.content = [[[NSMutableString alloc] init] autorelease];
情况2
注释掉CGImageRelease(imagRef)会导致imageRef对象泄漏。CG开头的是C语言的
2.代码逻辑问题(Logic error)
解决措施:
如上代码,当Tag不等于1、2和3的时候,就会出现很问题了。len is a garbage value。建议在声明变量时,同时进行初始化。
3、无效数据监测(Dead store)
解决措施:删除或者修改错误问题
4、API调用错误
NS_DESIGNATED_INITIALIZER
子类没有重写父类的所有初始化函数,而使用者恰好直接使用父类的初始化函数初始化对象,那么子类的成员变量就可能存在没有正确初始化的情况。
由于:
- 便利初始化函数只能调用自己类中的其他初始化方法
- 指定初始化函数才有资格调用父类的指定初始化函数