2011-05-12 63 views
0

的NSManagedObject的我創建的NSManagedObject的(覆蓋)情況下,使用insertNewObjectForEntityForName:優化配置未保存

如果我永遠不會保存上下文(並沒有增加它的保留計數),我還需要使用obj.managedObjectContext deleteObject:obj刪除呢?

如果是這樣,並假設它被保留,我首先刪除它,然後釋放它?

回答

0

一旦你使用insertNewObjectForEntityForName:對象將是你的NSManagedObjectContext內,無論您是否保留插入通話NSManagedObject產品。它與這個問題無關,你是否保留了上下文。

您可以通過以適當方式查詢上下文來始終獲取該條目的實例。它可能是插入給你的原始NSManagedObject實例,或者它可能不是。取決於你的應用程序的運作。

如果你想要的對象離開那裏再次,你需要從上下文刪除或恢復到最近一次保存的狀態莫名其妙。

+0

只是爲了確保我理解正確:無論上面的解釋,我仍然需要管理該對象的保留計數,因爲任何其他正常的對象,以避免內存泄漏。正確? – Ovesh 2011-05-12 12:58:49

+0

作爲類方法insertNewObjectForEntityForName:返回一個自動釋放對象。如果你想抓住那個物體,你需要通過放入一個容器或明確地保留。但該對象只是數據庫條目的表示,所以一旦你插入它的存在,直到你刪除或不保存。 – 2011-05-12 14:15:53

+0

是的,我明白關於被退回的對象的一切。我只是想了解一般NSManagedObject的內存管理方面。我假設我有一個對象(通過inserNewObject或通過獲取),當我不再需要內存中的實際對象時,無論我是否需要將它存儲在數據庫中,它都需要像常規一樣釋放目的。再校正一次? – Ovesh 2011-05-12 19:06:42