Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Ivanesik
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 10
#1

Состояние UIViewController - Objective-C

18.04.2016, 14:51. Просмотров 676. Ответов 6
Метки нет (Все метки)

Доброго времени суток, стыдно за такой вопрос, но поиск не дал рабочего результата
Есть приложение с несколькими ViewController, при этом при переходе между мини (TabBar и Navigation), логично освобождается память того с которого ушел, и значения в TextField'ах и Switch'ах этого контроллера соответственно очищаются. Каким образом можно сохранить состояние при переходе и как считывать значения другого контроллера (SecondViewController.*** не сработало)?
Пробовал выставить ключи (идентификаторы, прочитал в некой статье) для ViewController результата 0 опять очищается, пробовал на свой страх выключить ARC в CompileSourses тоже самое

Помогите товарищи, уже второй день туплю, в доступных исходниках глаза сломались разбираться, а поиск не дал результата (что пробовал, не работает)

Добавлено через 21 минуту
Т.е. понятно что можно сделать через БД, файлы, либо вроде как через NSUserDefaults. Но хотелось бы не восстанавливать значения во вьюшке в DidLoad, а как либо сохранять их там, без дальнейшего считывания из файла...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Митя800
49 / 49 / 12
Регистрация: 13.07.2015
Сообщений: 165
18.04.2016, 18:05     Состояние UIViewController #2
Зачем делать все наоборот? View это представление ваших данных, view не хранит их, а всего лишь представляет данные в графическом виде. Поэтому данные хранятся отдельно, например в БД. Если нужно помнить настройки подойдет NSUserDefaults, как вы уже правильно заметили.
Ivanesik
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 10
18.04.2016, 18:38  [ТС]     Состояние UIViewController #3
В моем случае я работаю с потоками NSStream, инициализирую их и подключаю (ip, port) в пределах одной View (контролера). Но при этом взаимодействовать с этими потоками (NSInputStream, NSOutputStream) надо во всем приложении, вне зависимости текущего ViewController'a... Туплю видимо, пока не разобрался, как можно это реализовать

Хотелось не использовать view для хранения, а просто не загружать каждый раз в нее данные, думал есть возможность сохранить текущее состояние
Митя800
49 / 49 / 12
Регистрация: 13.07.2015
Сообщений: 165
19.04.2016, 22:33     Состояние UIViewController #4
Почему бы не создать фоновый поток (это про threads), и в нем уже работать с внешней связью. А между главным(здесь UIKit работает) и фоновым потоком создать механизмом взаимодействия.
Ivanesik
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 10
20.04.2016, 06:05  [ТС]     Состояние UIViewController #5
Скорее всего подойдет, но не подскажите ли, как на obj-c реализуются фоновые потоки? Или где нормально описано их создание, работа и взаимодействие с ними?
Ivanesik
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 10
21.04.2016, 17:40  [ТС]     Состояние UIViewController #6
Как вычитал, потоки используются чисто для распараллеливания задач. Запустилось-выполнилось-закончилось (например загрузить картинку с Web-страницы). Но если я не сам создаю и описываю этот поток (от чего отговаривают все источники, да и задача не настолько серьезная), а использую средства Objective-C, то тут уже ни слова о возможности работы с Event'ами да и память используется общая вместе с той областью где я создаю поток, т.е. она всё равно очищается, соответственно очищаются и потоки... Пришел к тому, что нужно как-то инициализировать объект и его методы, события (handleEvents) извне.
Не в работе с View, а как-то по другому. Так, чтобы пользователь запустил подключение, а далее все этого контроллера произошло подключение, после чего независимо от пользовательский действий, и текущих View, приложение могло постоянно присылать-получать данные с потоков NSInputStream, NSoutputStream, и записывать их куда-либо, соответственно с помощью сигналов(событий) этих потоков (их также надо описать).
Но не получается найти пути к реализации этой задачи, уже руки опускаются

Добавлено через 11 минут
А при этом NSStream сам является потоком... Так вот где и как можно его описать, чтобы он принадлежал всем ViewControllers (т.е. они его видели). Либо просто был отдельно, но при этом можно было бы получать и отправлять данные с и на него на View?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2016, 09:29     Состояние UIViewController
Еще ссылки по теме:

Objective-C Прозрачный UIViewController
1С 1C 8.x Состояние
Objective-C Метод touchesBegan в UIViewController
C++ Linux Состояние pthread_mutex_t
Objective-C Не вызывается dealloc в UIViewController при popViewControllerAnimated

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
22.04.2016, 09:29     Состояние UIViewController #7
Архитектуру пока не до конца понимаю, но если надо создать сущность и раздавать ее всем VC по приложению, проще всего (и логичнее) сделать это в AppDelegate.
По аналогии с managedObjectContext из CoreData.
Dependency injection можно делать в зависимости от подключения VC.
Сорри если не о том.
Yandex
Объявления
22.04.2016, 09:29     Состояние UIViewController
Ответ Создать тему
Опции темы

Текущее время: 22:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru