iPhone内存泄漏问题?

Posted

技术标签:

【中文标题】iPhone内存泄漏问题?【英文标题】:Iphone memory leak issue? 【发布时间】:2010-12-30 05:40:02 【问题描述】:

此代码片段内存泄漏,如何解决此内存泄漏?

-(NSDictionary *)sanitizedFinancialLine:(NSDictionary *)theFinancialLine

 NSMutableDictionary *aFinancialLine = [NSMutableDictionary dictionaryWithDictionary:theFinancialLine];


for (id key in [aFinancialLine allKeys]) 
 id something = [aFinancialLine objectForKey:key];
 if ([something respondsToSelector:@selector(decimalValue)]) 
something = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *)something decimalValue]]; // memory is leaking here
[aFinancialLine setObject:something forKey:key];
   

 return [NSDictionary dictionaryWithDictionary:aFinancialLine];// and here

【问题讨论】:

最好粘贴代码文本而不是截图... 【参考方案1】:

正如所写,该代码中没有泄漏

但是,可能发生的情况是该代码行上的NSDecimalNumber allocated 被泄露,因为它在其他地方被过度保留(或释放不足)。尝试构建和分析和/或在分配工具中启用“跟踪保留事件”。

请注意,您可以只返回 aFinancialLine 而无需创建 NSDictionary 实例(不过这样做并没有什么坏处,而且更具防御性)。

【讨论】:

以上是关于iPhone内存泄漏问题?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 内存泄漏与商店套件

内存泄漏 - iPhone

分析仪结果与仪器泄漏:iPhone 内存泄漏

iPhone 内存泄漏工具

如何解决 xcode(仪器)中的 iPhone 应用程序内存泄漏

iPhone/iPad 应用程序内存泄漏