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

我怀疑代码 [outputString 复制]。但是我将它存储在数组中,并且我在 dealloc 上释放存储数组。格拉西亚斯。

4

1 回答 1

4

没有release平衡,[outputString copy]所以它被泄露了。将对象添加到数组时,它会被数组保留并在数组被销毁时释放。

于 2012-07-03T06:21:47.227 回答