Скажем, у меня есть свойство, объявленное как @property (nonatomic, strong) NSArray *menuArr;
ИЛИ @property (strong) NSArray *menuArr;
, и установите это свойство в viewDidLoad
. Как долго устройство "запомнит" информацию, которую я сохранил в массиве?
Свойство объявляется и устанавливается в viewController, встроенном в navigationViewController, который сам является первым контроллером представления в TabBarViewController. Другими словами, это первый взгляд, который видит пользователь, затем они могут перемещаться от него и обратно.
Не вдаваясь в дискуссию об атомном и неатомном, мой вопрос в том, что это
Означает ли свойство (объявленное в любом случае) бесконечно в среде iOS или его продолжительность ограничена такими факторами, как время, использование памяти в другом месте, выключение устройства и т.д.
Чтобы избежать этой проблемы "x y" здесь, почему Im спрашивает:
Im работает над приложением, которое включает в себя меню, разбитое на несколько категорий с несколькими элементами в каждой категории..... как вы могли ожидать, что это меню. Все пункты меню хранятся на parse.com. Сначала я делал отдельный PFQuery на каждой странице, один на странице категорий, чтобы получить категории, когда пользователь выбирает категорию, на которую нажимается новая страница, а второй PFQuery получает все предметы в выбранной категории. Это сработало, но страницы заняли довольно много времени, чтобы нагрузить, возможно, 10-15 секунд, иногда без реального указания на то, что приложение не застыло.
Чтобы исправить это, я решил запустить один PFQuery, когда первое представление приложения загрузилось в viewDidLoad
, чтобы получить все пункты меню и отсортировать себя во вложенные массивы категорий, содержащих элементы. Затем я сохраняю массив меню в свойстве viewController. Позже, когда я иду в меню, у меня есть внизу viewDidLoad
:
//get e reference to the first view controller, the one that has the menu array
FirstViewController *myVC1ref = (FirstViewController *)[[[self.navigationController.tabBarController.viewControllers objectAtIndex:0] viewControllers] objectAtIndex:0];
//set thisviewController `menuArr` property to point to the menuArr on the first viewController.
_menuArr=myVC1ref.menuArr;
Я понимаю, что это создает указатель на исходный массив и фактически не создает второй массив (пожалуйста, исправьте меня, если я ошибаюсь).
Этот метод занимает около 10-15 секунд для загрузки и сортировки массива, который один раз, но затем перемещение между страницами происходит мгновенно после того, что намного лучше.
Я планирую делать запросы в местах, чтобы увидеть, были ли изменены какие-либо пункты меню, и если это необходимо для повторной загрузки и сортировки меню.
До сих пор в моем тестировании приложение, похоже, помнит, что информация в массиве прекрасна в течение всего дня с обычным несвязанным использованием телефона, но для этого должны быть некоторые ограничения?