【发布时间】:2012-02-28 08:11:35
【问题描述】:
我是 iOS 编程新手,我已经为我的客户开发了一个应用程序。但是,当我使用 Instruments 运行应用程序时,似乎存在由字典引起的内存泄漏问题,但如果我释放它,应用程序就会崩溃。我不确定是什么问题。
这是 Instruments 的图片:http://www.flickr.com/photos/71234685@N02/6791493522/in/photostream/
-(void) generateLiquidProductData:(NSArray*) liquidProduct {
int _count = 52;
self.liquidProductData = [[NSMutableArray alloc] initWithCapacity:_count];
for (int i = 0; i < _count; i++){
float x = i;
float y;
if ((liquidProduct != (id)[NSNull null]) && (liquidProduct != nil) && ([liquidProduct count] != 0)) {
y = [[liquidProduct objectAtIndex:i] floatValue];
y = round(y * 10000.0f) / 10000.0f;
}
else {
y = 0.0;
y = round(y * 10000.0f) / 10000.0f;
}
NSDictionary* _gotLiquidProduct = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble:x],X_VAL,
[NSNumber numberWithDouble:y],Y_VAL,
nil];
NSLog(@"This is y %.5f", y);
[self.liquidProductData addObject:_gotLiquidProduct];
}
}
【问题讨论】:
-
行 self.liquidProductData = [[NSMutableArray alloc] initWithCapacity:_count];会导致泄漏:你使用了setter,所以如果保留liquidProductData属性,就会导致泄漏。相反,您可以添加自动释放,或使用自动释放方法 [NSMutableArray arrayWithCapacity:]
标签: objective-c memory-leaks ios4