2013-03-19 62 views
0

我收集響應入變量保留一個自動釋放物體引起存儲器泄漏

-(NSMutableDictionary *)getCombineIdAndNames{  

NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [[NSMutableDictionary alloc] init]; 

    [lObjCombineIdAndNamesArrayPtr setObject:lObjtempNamePtr 
             forKey:lObjtempIdPtr]; 
    return [lObjCombineIdAndNamesArrayPtr autorelease]; 
} 

這導致存儲器泄漏

gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr = [gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames]; 

gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr。這是類型複製的屬性。但它仍然給內存泄漏。如何解決它,請幫助我。

+0

你能告訴我們什麼是泄漏說在這一點上? – 2013-03-19 12:38:09

回答

0

getCombineIdAndNames非常好。您在返回之前先查字典並自動釋放它。那裏沒有錯。

這將暗示內存泄漏是由gObjAppDelegatePtr實例引起的。要麼它不釋放它的財產,要麼可能整個對象被泄露。

順便說一句,您可以在getCombineIdAndNames中改進的一件事是使用便利的構造函數NSMutableDictionary來完全避免所有的alloc/release調用。您也可以使用新的Obj-C容器語法:

-(NSMutableDictionary *)getCombineIdAndNames{  
    NSMutableDictionary *lObjCombineIdAndNamesArrayPtr = [NSMutableDictionary dictionary]; 
    lObjCombineIdAndNamesArrayPtr[lObjtempIdPtr] = lObjtempNamePtr; 
    return lObjCombineIdAndNamesArrayPtr; 
} 
+0

仍然存在內存泄漏。我沒有分配appdelegate字典,因爲我正在爲appdelegate字典分配字典,並且它是類型複製的屬性。 – user2186457 2013-03-19 12:42:20

+0

NSMutableDictionary * lObjTempDictPtr =(NSMutableDictionary *)nil; lObjTempDictPtr = [[ALLOC的NSMutableDictionary] INIT]; lObjTempDictPtr = [[gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames]保留]; gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr = lObjTempDictPtr; SAFE_RELEASE(lObjTempDictPtr) 但它仍然顯示在語句內存泄漏lObjTempDictPtr = [[gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames] retain]; – user2186457 2013-03-19 13:08:23

+0

仍然有內存泄漏在這裏gObjAppDelegatePtr.m_cObjCombineIdNameDictPtr = [gObjAppDelegatePtr.m_cDbHandler getCombineIdAndNames];請幫我解決這個問題..希望我會得到幫助 – user2186457 2013-03-19 13:29:35