【问题标题】:regarding Static memory leak关于静态内存泄漏
【发布时间】:2012-03-16 05:57:51
【问题描述】:
我在其他一些类中有一个名为 LineInfo 的类,我正在分配它,并使用该类的对象将内存分配给某个数组,然后如何释放该数组,例如在 B 类中:
A *a=[[A alloc]init];
a.lineArray=[[NSMutableArray alloc]initWithArray:_xElements];
[a release];
现在我发布了一个 ([a release]),但在静态分析器中仍然会泄漏 linearray。如何释放它?
【问题讨论】:
标签:
iphone
objective-c
ios
【解决方案1】:
如果lineArray 是您的“A”类的保留属性,那么为其分配一个已分配的对象应该会引发内存泄漏。如果是,则改为以下行;
a.lineArray=[[NSMutableArray alloc]initWithArray:_xElements];
尝试以下方法,
NSMutableArray *tempArray = [[NSMutableArray alloc]initWithArray:_xElements];
a.lineArray = tempArray;
[tempArray release];
【解决方案2】:
lineArray 可能是 A 类的保留属性,所以当你分配它时,你应该做一个自动释放:
a.lineArray=[[[NSMutableArray alloc]initWithArray:_xElements] autorelease];
或更好:
a.lineArray = [NSMutableArray arrayWithArray: _xElements];
那么你需要在A的dealloc方法中释放lineArray。
- (void)dealloc
{
[lineArray release];
[super dealloc];
}