Жизненный цикл объекта основных данных? Когда их выпустят? - PullRequest
0 голосов
/ 12 августа 2010

Я импортирую кучу данных из веб-службы в фоновом потоке и случайно сталкиваюсь с проблемами плохого доступа, я полагаю, в основном из-за назначения отношений.

Мне интересно, как долго новые объекты, которые я создаю и сохраняю, остаются вокруг?

Ответы [ 2 ]

0 голосов
/ 12 августа 2010

Базовые данные следуют тем же правилам, что и любой другой объект в Objective-C, за исключением небольшого изменения.

Базовые данные будут внутренне решать, когда освобождать объекты, поэтому даже если вы закончили с объектом и освободили все свои ссылки на него, он может остаться после этого в зависимости от того, что Core Data решит с ним .

Кроме того, когда NSManagedObject загружается в память, весь объект может не обязательно загружаться. Базовые данные по умолчанию загружают базовую структуру объекта, но не загружают его данные или связи. Это сохраняет начальный объем памяти очень низким. При доступе к свойству весь экземпляр будет полностью реализован.

Краткий ответ таков: пока вы следуете правилам сохранения релиза, вам не нужно беспокоиться об управлении памятью с помощью Core Data.

0 голосов
/ 12 августа 2010

Они освобождаются, когда счет удержания = 0.

Если вы каким-либо образом не станете владельцем этих прав, они исчезнут, когда пул авто-выпусков заполнится.Предполагается, что вы создаете их с помощью ... insertNewObjectForEntityForName:inManagedObjectContext:

Контекст управляемого объекта все равно будет иметь запись, но NSManagedObject подчиняется тем же правилам сохранения / освобождения, что и любой другой объект.Думайте о NSManagedObject как об контейнере времени выполнения для базовых данных.

Если вы хотите сохранить их, используйте NSArrayController для OS X или NSMutableSet для UIKit, предложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...