我仍在學習通過iOS開發和使用核心數據的方式,並剛剛遇到保留週期。核心數據:避免在多對多關係中保留週期
通過閱讀Core Data Programming Guide,我的理解是,在完成關係後,使用託管對象上下文方法refreshObject:mergeChanges
來確保保留週期被破壞。
因此可以說我和部門及其員工之間有一對多的關係,在我的代碼中,我訪問部門中的員工關係,這是否意味着我現在需要遍歷每個員工對象並致電refreshObject:mergeChanges
方法?在代碼中,這將是
for (Employee *anEmployee in department.employees) {
//some code that accesses an employee's properties
[context refreshObject:enEmployee mergeChanges:NO];
}
看來,如果我不這樣做,每個員工對象訪問我現在將包含該部門的參考,我將結束與保留週期。
我的理解在這裏正確嗎?在處理Core Data中的多對多關係時,這是一種標準方法嗎?謝謝。
所以這意味着每次我處理關係中的對象時,我都需要在對象上調用該方法? – 2010-10-21 16:34:41
這不是強制性的,儘管強烈建議你有一個相當大的商店,並經常訪問不同的NSManagedObjects,並且不需要將它們保存在內存中(你可以讓它們成爲錯誤)。將CoreData想象成一個「垃圾收集器系統」,在垃圾收集環境中,如果您擔心內存使用情況,則只處置內存。 'refreshObject:mergeChanges'會釋放該對象,而不是讓它進入垃圾收集器系統。這垃圾收集器的東西只是一個類比,讓你瞭解過程。 – vfn 2010-10-21 22:33:41