2013-04-16 29 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; 
}