Xcode提供了两种工具帮助我们查找泄漏点:Analyze和Instruments。
一、 Analyze是静态分析工具。可以通过Product→Analyze菜单项启动,使用Analyze静态分析查找可以泄漏点。
遇到的警告:
1.“User-facing text should use localized string macro”---> 给label赋值的时候,提示面向用户的文本应该使用本地化的字符串宏此为代码中配置了本地化,面向用户的应该用字符串宏,而我们直接赋值为汉字。
处理:BuildSetting 搜索 Localizability 设置为NO
2.“Value stored to 'dic' is never read”--->存储到“dic”的值永远不会被读取
处理:注释/删除
3.“nil returned from a method that is expected to return a non-null value” ---> 从期望返回非空值的方法返回NIL
4.“Undefined or garbage value returned to caller” ---> 返回给调用者的未定义或垃圾值
处理:使用未初始化的变量,比如将未初始化的变量赋予另一变量、返回未赋值的变量等,即使在条件语句赋值也会有提示,所以未以防万一,变量一定记得初始化!
5.“Potential leak of an object” ---> 对象的潜在泄漏
6.“Returning 'self' while it is not set to the result of '[(super or self) init...] ”
处理:正确书写 self = [super init]
7.“Instance variable used while 'self' is not set to the result of '[(super or self) init...]'”
处理:正确书写 self = [super initWithFrame:frame]
8.“The ‘viewWillAppear:’ instance method in UIViewController subclass ‘YourViewController’ is missing a [super viewWillAppear:] call”
处理:添加 [super viewWillAppear:]
9.“The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage” ---> 复合表达式 左边的值未被初始化,计算了也是垃圾值
CGFloat min = 0; //初始化并赋值
if (_collectionStyle == STYLE_DEFAULT) {
min = 10;
}else if (_collectionStyle == STYLE_SUGGEST) {
min = 0;
} else if (_collectionStyle == STYLE_NORESULT){
min = 10;
}
return min;
10.“Passed-by-value struct argument contains uninitialized data” 参数中包含了未被初始化的结构体
- (NSRange *)getLocationRange {
NSRange range =NSMakeRange(0,0);
return range ;
}