2013-04-16 32 views
1

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

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

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

谢谢!

+0

这是什么是给你的实际消息?你在这里的代码看起来很好,但它可能告诉你allow或init方法有泄漏,并且在这里实现。很多时候你可以扩大泄漏信息,它会跟踪路径并提供更多细节。 – DBD

回答

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,如果我不喜欢的文字变量。自已经由点alloc'ed,所以它的分析仪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; 
}