我一直在試圖解決這個問題。基本上我使用便利的RGB UIColor函數來返回一個UIColor來給我的UINavigationBar,UIToolbar和其他對象着色。然而,由於某些原因,在儀器中它一直說我每次加載UIView時都有內存泄漏。任何幫助,將不勝感激。爲了清晰起見,我在此簡化了代碼。這裏是我的功能(該功能具有RGB和Alpha作爲變量),它位於全球單例類:UIColor內存泄漏問題
- (UIColor *)returnSelectedColor{
return [UIColor colorWithRed:(100)/255.0 green:(100)/255.0 blue:(100)/255.0 alpha:(1.0)];
}
在我的RootViewController的我設置在viewWillAppear中(有時色調可以調用之間卻改變我嘗試過ViewDidLoad,但問題仍然存在)。我嘗試了兩種不同的方法來解決這個問題,但泄漏仍然存在。
第一種方法是隻設置色調時視圖出現這樣的:
self.navigationController.navigationBar.tintColor=[[GlobalData sharedGlobalData] returnSelectedNavigationColor];
第二種方法是爲視圖創建的UIColor屬性,將其設置爲期望的UIColor,然後設置導航欄色彩到這個屬性,當視圖關閉時,我釋放該屬性。這種方法也會導致內存泄漏。這裏是代碼:
if(self.navigationToolbarColor!=nil){
[self.navigationToolbarColor release];
}
self.navigationToolbarColor=[[[GlobalData sharedGlobalData] returnSelectedNavigationColor] retain];
self.navigationController.navigationBar.tintColor=self.navigationToolbarColor;
任何人有什麼問題的想法可能是?提前致謝。
感謝您的回覆。不過,我試過,但我仍然得到相同的內存泄漏。我使用的第一種方法沒有保留(沒有屬性)並導致內存泄漏。我嘗試使用沒有保留的屬性,如你所建議的,這也給內存泄漏。我只想到了一些事情,這可能是因爲我的函數是在單例對象中嗎? – 2011-05-05 00:46:16
不,那不是。 self.navigationToolbarColor = [UIColor colorWithRed:(39)/255.0 green:(64)/255.0 blue:(139)/255.0 alpha:(1.0)]我直接嘗試這樣做,而不是調用一個函數並仍然出現內存泄漏。 ;在我將其分配給導航控制器的色調之後,我應該在什麼地方釋放UIColor?我認爲這不是必須的,因爲它應該是一個自動發佈的對象。任何線索或想法都會有所幫助。 – 2011-05-05 00:53:47