1

我正在構建一個新聞應用程序,您有一系列代表實際文章的圖像。當你點擊其中的一個時,它會打開主文章頁面,其中包含相關文章底部的滾動視圖。訪問CoreData對多關係時分配的內存未發佈?

我發現一個奇怪的(可能與CoreData有關)關於所述底部滾動條的問題。當我打開文章頁面時,我獲取相關文章,分配一系列articleViewControllers並將其視圖添加到滾動視圖中。當我從文章頁面切換時,我從滾動器中刪除所有視圖並釋放articleViewControllers。在使用儀器和一對夫婦heapshots(一個竊聽的文章之前,另一切換回主網頁的時候),我發現,內存大量保持分配(見圖片)

enter image description here

enter image description here

當查看非對象標籤,我發現,大部分的分配發生在下面的代碼行,在上述的articleViewController方法viewDidLoad

NSSet *tempSet = [[NSSet alloc] initWithSet:tempArticle.thumb]; 
    //tempArticle.thumb is the actual problem here 
    [tempSet release] 

tempArticleArticle類的一個實例,它是NSManagedObject的一個子類。 如果我註釋掉這兩行代碼,一切正常,所以我猜這是由於錯誤的CoreData使用。

任何幫助表示讚賞。謝謝!

回答

0

核心數據處理自己的內存管理。它可以將物體留在記憶中或者以自己的想法清除它們。

建議您不要在NSManagedObjects中存儲較大的BLOB(如圖像)。相反,將圖像存儲到磁盤,其文件路徑引用在NSManagedObject中。

+0

或使用新的允許外部存儲複選框。 –

+1

嘿,這很酷!值得注意的是,可悲的是它只適用於iOS 5+,所以我不會利用它一段時間=( – lorean

+0

嗨,謝謝你的迴應,但這不是問題,我已經在使用外部存儲保存圖像並將路徑保存在NSString屬性中。 –