Какова причина, почему базовые данные заботятся о жизненном цикле смоделированных свойств?

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

Это, потому что Базовые Данные могут отбросить значение свойства динамично, когда-либо при необходимости? И что Базовые Данные делают при отбрасывании управляемого объекта? Если нет никакого-dealloc, то, как и когда свойства освобождают?

1
задан dontWatchMyProfile 7 June 2010 в 15:09
поделиться

2 ответа

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

1
ответ дан 3 September 2019 в 00:00
поделиться

Сложная часть памяти управляемых объектов возникает, когда объекты превращаются в ошибки. Неисправность - это призрак объекта. Он существует и отвечает на сообщения, но у него нет заполненных атрибутов. Например, вы можете подсчитать количество объектов в отношении ко многим, даже если сами объекты являются ошибками.

Ошибки используются для сохранения графа объекта в памяти без накладных расходов на фактические данные. Технически объект все еще жив, поэтому его dealloc никогда не вызывался.

Когда контекст превращает объект в ошибку, объект освобождает и обнуляет свои атрибуты в памяти. Это делается в willTurnIntoFault и didTurnIntoFault . Если вам нужно выполнить какое-то специальное освобождение, вы должны переопределить эти методы (обычно последний.)

Ошибка заставляет управляемые объекты полагаться на методы, отличные от других классов, для инициализации и очистки. Вы инициализируете awakeFromInsert или awakeFromFetch и освобождаете память в willTurnIntoFault и didTurnIntoFault .

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

1
ответ дан 3 September 2019 в 00:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: