/ / Как да освободим обект NSManagedObject? - какао, основни данни

Как да освободя обект NSManagedObject? - какао, основни данни

Как да освободите обект NSManagedObject? Когато изтрих обект (NSManagedObject) в NSManagedObjectContext използвайки - deleteObject: и след това изпълнявам действие save, но аз не виждам, Той е освободен. Трябва ли да се грижа за управление на паметта на NSManagedObject?

Използвам ARC в този проект и управляваният обект, заместващ метода dealloc. кодът изглежда

  • (void) dealloc { NSLog (@ "Управление на обекти, освободени") }

Изтривам управляван обект от контекст и след това запазвам посочвам, че не се нуждая от този управляван обект, ако контекстът не го освободи дали не губи паметта?

Благодаря предварително.

Отговори:

1 за отговор № 1

Кратък отговор - Core Data ще управлява паметта за обекти NSManagedObject.

По-дълъг отговор - Дори да е казано Core DataЗа да изтриете обекта от контекста, все още можете да запазите позоваване на (сега невалиден) обект себе си някъде, да речем в масив, който съдържа оригиналните извлечени резултати, или може би като свойство. Тъй като използвате ARC, тези обекти в крайна сметка ще бъдат освободени, и така ще има всякакви позовавания, които имат към вашия обект, но може да не видите раздаване веднага, когато се обадите deleteObject: поради тази причина.

Ако нямате проблеми с производителността или паметта, няма да се тревожа твърде много за него. Ако сте тогава, може да си струва да погледнете refreshObject: mergeChanges: метод на NSManagedObjectContext като отправна точка.


0 за отговор № 2

В типичен сценарий, в който извличате управляванобект от контекст, след това го изтриете и след това запишете контекста, не е необходимо да освобождавате управлявания обект, стига да не го изпращате, разбира се.

PS: Ако мотивацията на вашия въпрос е да научите, че е добре, но бих ви препоръчал да се преместите в ARC.