Базовое управление памятью данных - PullRequest
0 голосов
/ 13 июля 2010

Просто хочу убедиться, что я делаю правильные вещи с управлением памятью Core Data.

В контроллере моего представления (который является представлением панели вкладок) viewDidLoad Я использую NSFetchRequest для извлечения строкЯ нуждаюсь.Затем я сохраняю возвращенный объект NSArray, поскольку мне нужно подождать, пока взаимодействие с пользователем покажет часть этих данных.В viewDidUnload я освобождаю этот массив.

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

Ответы [ 2 ]

1 голос
/ 13 июля 2010

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

Сказав, что я не понимаю, зачем вам нужно извлекать потенциально большой набор данных и удерживать его в представлении панели вкладок, самое большее, вы могли бы иметь полдюжиныкнопки, показывающие сразу, и если у вас есть страница настройки, сколько вкладок можно реально вставить в нее, прежде чем пользователю будет неудобно ее прокручивать?Более двух десятков, и у вас будут проблемы с пользовательским интерфейсом, и даже на таком устройстве, как iPhone, которое не имеет значительного объема памяти.

0 голосов
/ 14 июля 2010

Это решение подойдет, хотя вы можете посмотреть на NSFetchedResultsController, так как оно сделает для вас ОЧЕНЬ тяжелую работу.

В противном случае у вас все в порядке, и память обрабатывается для вас.Когда вы сделаете выборку, вы вернете скелетные объекты (считайте небольшое количество используемой памяти, пока не получите индивидуальный доступ), и если они не будут использоваться некоторое время, они могут быть превращены обратно в скелеты.Это означает, что Core Data сделает большую часть управления памятью за вас.Пока вы держитесь за свой массив, вы золотые.

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