静态分析器通知我以下代码存在潜在泄漏。我不明白是否有任何泄漏的空间。此外,我不明白分析仪如何在整个项目中如此有用,但却错过了这么简单的事情。
我的假设是分析仪是正确的,我正在泄漏。但是如何?
+ (McFieldDefinition *) freeformFieldDefinition {
return [[[McFieldDefinition alloc] initWithText:@"0201FFM100"] autorelease];
}
谢谢!
答案 0 :(得分:0)
很抱歉发布此问题。我终于在这里找到了答案:https://stackoverflow.com/a/15668026/300986。
问题出在我的init方法中:
- (id) initWithText:(NSString *)text {
if (!text) return nil;
if ([text length] < 7) return nil;
self = [self init];
if (self) {
// do stuff
}
return self;
}
如果我不喜欢文本变量,那两个保护条款返回nil。 self已经被分配了,所以它是Analyzer 1,bmauter 0。
这是我的新版本:
- (id) initWithText:(NSString *)text {
self = [self init];
if (!self) return nil;
if (!text || [text length] < 7) {
[self release];
return nil;
}
// do stuff
return self;
}