1

静的アナライザーは、次のコードにリークの可能性があることを通知しています。漏れの余地があるのか​​理解できません。さらに、アナライザーがプロジェクト全体でどのように役立つのか理解できませんが、これほど簡単なことを見逃しています。

私の仮定は、アナライザーが正しく、漏れているということです。しかし、どのように?

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

ありがとう!

4

1 に答える 1

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

テキスト変数が気に入らない場合、これらの 2 つのガード句は 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;
}
于 2013-04-16T14:11:58.923 に答える