Базовые данные могут использовать больше памяти, как вы видели, если есть память, которая будет иметься. Тем не менее, одним из преимуществ Core Data является ситуация с нехваткой памяти. Когда это произойдет, Core Data автоматически сократит объем памяти, насколько это возможно.
Еще одна вещь, которую стоит рассмотреть, позволяете ли вы Core Data ошибаться в этих объектах? Если вы набираете 1000 объектов и отображаете 10 из них, то остальные 990 должны быть в неисправном состоянии и, следовательно, занимать меньше памяти.
Я бы пробежался по инструментам Core Data и убедился, что у вас нет полной реализации всех этих объектов случайно и непреднамеренно приводит к тому, что использование вашей памяти оказывается выше необходимого.
Обновление
Звучит так, как будто вы импортируете эти данные, а затем не очищаете базовые данные должным образом, если вы не видите никаких сбоев.
Предполагая, что вы загружаете эти данные при первом запуске (кстати, я бы этого не делал, я бы предварительно загрузил приложение и полностью избегал plist-файлов), вы хотите вызвать -reset
на вашем NSManagedObjectContext
после загрузки. завершено, так что любые объекты, которые не используются, стираются из памяти. Затем, когда данные возвращаются в память (при использовании), они будут неправильно обработаны.
Наконец, убедитесь, что вы используете хранилище SQLite. В противном случае это все спорно.