2010-06-13 64 views
0

我的iPhone應用程序播放由5個用戶圖像組成的幻燈片。這些圖像使用核心數據進行存儲。我注意到每次播放不同的幻燈片時都會建立內存,並且不會釋放任何以前播放過的幻燈片。 這些圖像在對象分配中顯示爲CFData。於是,我就在dealloc方法如果我CFRelease()核心數據中的圖像,我該如何恢復它?

CFRelease(slideshow.image1); 
CFRelease(slideshow.image2); 
CFRelease(slideshow.image3); 
CFRelease(slideshow.image4); 
CFRelease(slideshow.image5); 

這釋放以前的幻燈片大......但是當我回去再查看相同的幻燈片,它崩潰發佈這個數據。 我猜我需要再次分配/初始化這些圖像,但我不知道如何?或者,也許我應該以不同的方式管理這些內存?

回答

2

這聽起來像是你的CFRelease -ing數據,你不應該這樣做,並且因爲你在使用NSManagedObject,所以當Core Data變爲「WTF?」時,你不可避免地會發生崩潰。

通過「它不是釋放」您是否看到內存泄漏,或簡單的內存使用情況增長?如果是前者,那麼我們需要更多信息,特別是如果核心數據泄露,您可能需要提交錯誤報告(這不太可能)。如果是後者,那麼你可以做很多事情,因爲Core Data負責自己的內存管理。

您可以使用NSAutoreleasePool進行優化,但我不能再多說了。

+0

這只是內存使用增長。我一直無法找到任何內存泄漏,但我一直在崩潰。但是,這些崩潰似乎只是在大量使用後才發生。所以我的想法是,內存的增加導致了不穩定。 崩潰通常發生在編輯圖像的時候。重複使用相機和圖像選擇器後。 – Sam 2010-06-14 00:13:43

+0

越來越多的內存使用情況並不一定表明存在問題。如果您使用泄漏來運行您的應用程序並且什麼也找不到 - 尤其是在設備上進行測試時 - 那麼您可能沒有任何泄漏。 – 2010-06-14 00:49:04

+0

有沒有辦法在我調用CFRelease後重新分配這些NSManagedObjects?我無法理解蘋果公司的文檔。 – Sam 2010-06-14 20:23:53

相關問題