修改内容后发生NSDictionary内存泄漏

修改内容后发生NSDictionary内存泄漏

问题描述:

试图追踪内存泄漏。我将它追溯到一个合成的NSDictionary,用于存储在启动时从文档文件夹读入的plist数据。它第一次运行,没有泄漏。但后来在应用程序中,我进行了一次网络调用,覆盖NSDictonary对象,并在那里看到泄漏。修改内容后发生NSDictionary内存泄漏

更新效果很好,但在乐器中,我在覆盖NSDictionary时看到了泄漏。

我已经尝试过标准版本和nil之前将合成的NSDictionary设置为新的内容。不知道接下来要尝试什么。

通常找到答案,我正在寻找马上在这里。但是这些让我感到困惑。

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 


Hubplist = (NSDictionary *)[NSPropertyListSerialization 
             propertyListWithData:plistXML 
             options:NSPropertyListImmutable 
             format:&format 
             error:NULL]; 
+0

您使用的是ARC吗? – hooleyhoop

+0

不,不使用ARC。我确实对数据有一定的保留,而且这似乎在应用程序的整个生命周期中都是有效的(它需要它)。 – SG9

+0

在这种情况下,你的代码片段显示没有用的问题:) – hooleyhoop

如果你已经保留或分配Hubplist任何你需要重写之前将其释放。

NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:plistPath]; 

[Hubplist release]; 
Hubplist = nil; 
Hubplist = (NSDictionary *)[NSPropertyListSerialization 
             propertyListWithData:plistXML 
             options:NSPropertyListImmutable 
             format:&format 
             error:NULL]; 
// Also make sure to retain it if needed 
[Hubplist retain];