我想釋放一些內存釋放上下文中未使用的ManagedObjects。CoreData - 刷新一個對象不會改變registeredObjects計數
我不喜歡使用reset
,我想用這個函數來釋放單個對象:
[self.managedObjectContext refreshObject:alarm mergeChanges:NO];
現在,如果我日誌registeredObjects count
此調用之後,似乎一切都沒有改變。我仍然可以獲得與通話前相同數量的對象。
只是爲了幫助您理解這裏的示例,它是對模型的簡單描述: 這是一個典型的帶有提醒的任務列表。所以有與這些任務相關的Task對象和Alarm對象。任何任務都可以有多個警報。
這裏是產生這一問題的代碼:
Alarm *alarm = [NSEntityDescription insertNewObjectForEntityForName:ENTITY_ALARM inManagedObjectContext:self.managedObjectContext];
self.task.alarm = [NSSet setWithObject:alarm];
[self saveContext];
[self.managedObjectContext refreshObject:alarm mergeChanges:NO];
因爲我在爲Task
詳圖我不感興趣,在內存維護Alarm
對象。
我的問題是:
1)爲什麼要註冊的對象的計數調用refreshObject
2)這是一個很好的做法後,不會改變?或者我應該重置,避免釋放單個對象?
您只能對對象發生故障,所以應該保持註冊狀態,但其數據有故障。 – Volker