我如何说服XCode的分析仪这不是泄漏?

时间:2013-04-16 13:56:20

标签: objective-c xcode static-analysis

静态分析器通知我以下代码存在潜在泄漏。我不明白是否有任何泄漏的空间。此外,我不明白分析仪如何在整个项目中如此有用,但却错过了这么简单的事情。

我的假设是分析仪是正确的,我正在泄漏。但是如何?

+ (McFieldDefinition *) freeformFieldDefinition {
    return [[[McFieldDefinition alloc] initWithText:@"0201FFM100"] autorelease];
}

谢谢!

1 个答案:

答案 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;
}