0

xcodeからのメモリリークについてコードを分析すると、警告が表示されます。私はそれを理解するために何時間も試みましたが、理解できませんでしたが、特定のコードにいくつかの疑いがあります:

[stack push:[outputString copy]];
[stack print]; //here xcode tell there is potential leak of an object that is createn on above line

私のスタック実装は次のとおりです。

-(void) push:(NSString *)element{
[store addObject:element];
top++;
}

-(void) print{
NSLog(@"%@", [store objectAtIndex:top]);
}

- (void)dealloc {
[store release];
[super dealloc];
}

これが私のスタッククラスの初期化です。

-(id) initWithMutableArray{
self = [super init];
if(self){
    store = [[NSMutableArray alloc] init];
    top = -1;
}
return self;
}

私の疑いはコード[outputStringcopy]にあります。しかし、私はそれを配列に格納しており、deallocでストア配列をリリースしています。グラシアス。

4

1 に答える 1

4

releaseバランスが取れていない[outputString copy]ので漏れます。オブジェクトを配列に追加すると、オブジェクトは配列によって保持され、配列が破棄されると解放されます。

于 2012-07-03T06:21:47.227 に答える