2012-07-09 81 views
0

内存泄漏问题我已经奋斗了内存泄漏,以及多一点再一个它恰好大多是在同一个位置。我有这个问题,我正在使用类来存储代码中需要的全局信息,因为它存储用户添加到膳食计划中的食物列表。我拥有的问题是它是一个我正在使用的相对较大的数据结构。数据结构是一本字典,其中包含五个字典,它们都有8个可变数组,它们可以像用户所希望的那样大,因为它可以添加尽可能多的食物。目标C

我已经设置像这样

mealInfo = [[NSMutableDictionary alloc] init] 
[mealInfo setObject:[NSMutableDictionary dictionary] forKey:"foo"]; 
[[mealInfo objectForKey:"such"] setObject: [NSMutableArray array] forKey:"bar"]; 

这是重复进行完整的数据结构的结构。这似乎解决了我在xcode中分析时可能发生的一些内存泄漏。问题进一步是因为我有一个想法是什么问题,而不是解决方案。我创建了对象,它在我所在的.m文件的局部范围内创建了这个结构。我将这个结构保存在创建了mealInfo的类中,而不是本地作用域中,并且使用该类的静态对象。 (我没有使用太多的代码,因为它是一个在很多地方,两个是太多的路线

我保存到类的静态变量后,我释放本地作用域,我不能释放mealInfo是因为当我在过去做过这些事情时,它实际上会导致对象在类中消失而无法初始化,使其他类尝试访问此信息时无法访问它。

我想到的一个解决方案是将所有的保存和存储都发生在它初始化的类中,只是使用getter和setter,但试图通过使它成为一个对象来使它更容易访问从其他类中调用,并在那些变得稍微复杂和混乱的类中改变。这是我试图避免的。如果这是唯一的解决方案,我会这样做,但希望首先使用此方法。

我希望这不是太混乱。我也希望有人可能有解决这个内存泄漏。谢谢大家至少阅读所有这些内容。

+0

这听起来像核心数据的作业。 – 2012-07-09 13:55:46

+0

你有没有这个原因的例子,我不确定那个对象是什么样的。我看到了它的维基。它是否与NSObject完全不同?我想我不确定如何设置。我也看到维基解释几乎我想要的东西,因为我想操纵和阅读,而不必担心的事情的记忆的一部分,这是我们都知道这样一个有趣的事情有错误的代码:-) – Rob 2012-07-09 14:11:32

+1

如果你的避风港“T已经读它,读出的[核心数据编程指南(https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html),并检查了相关样本。 – 2012-07-09 16:04:19

回答

1

这是一个很难理解你的问题...但如果mealInfo本身就是你的静态类变量,那么你就可以一次性的Alloc它 - 只有一次 - 通过执行以下操作。

if (!mealInfo) 
    mealInfo = [[NSMutableDictionary alloc] init]; 

否则,您必须在每次分配它时释放它,否则会泄漏。

+0

我之前实际上找到了一个解决方案,我想这是这个,但忘了自己回答这个问题,所以谢谢。 – Rob 2012-11-12 16:41:16