2012-07-09 80 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