Я знаю, что много данных, и я уже использую другой Entity для сохранения данных.
blockquote>Я не вижу связи между использованием разных сущностей и памяти Применение. Это не должно иметь значения (если у вас нет какой-то странной настройки с тысячами отношений), учитывая, что вы следуете правилам управления памятью, которые применяются к Core Data.
Основные правила:
- Если вы выполняете операции в цикле, убедитесь, что вы освободили пул автозаполнения.
- После того, как экземпляры NSManagedObject больше не нужны, и их количество сказывается на использовании памяти, вы можете превратить их в ошибки, вызвав
refreshObject:mergeChanges:
в контексте.- Вы также можете вызвать
reset
в контексте, чтобы аннулировать все выбранные управляемые объекты (помните, что вы не должны использовать эти недействительные объекты после вызова сброса).- Остерегайтесь циклических ссылки - в основном, объекты, связанные с отношениями, имеют такие типы ссылок, и вам может потребоваться включить их в контекст вручную / сброс или просто полностью отказаться от контекста управляемых объектов.
Советы для получения данных:
- Если вам нужно извлечь много данных, и это возможно, используйте Тип результата словаря, поскольку словарь занимает гораздо меньше памяти, чем экземпляры управляемых объектов.
- Примените
fetchLimit
к NSFetchRequest, чтобы ограничить количество получаемых объектов. Объедините его сfetchOffset
, чтобы получить «окно» данных.- Также рассматривается «fetchBatchSize».