Как сохранить переменную, которая изменяется во всех ViewControllers - PullRequest
0 голосов
/ 05 ноября 2018

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

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

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

Сделайте это явным с помощью внедрения зависимостей и передайте этот объект от одного VC к другому по мере навигации.

SecondViewController *viewController = [[SecondViewController alloc] init];
viewController.user = self.user; // Pass the user along...
[self presentViewController:viewController animated:YES completion:nil];

Вы можете сделать то же самое с segues, передать свой объект в методе prepareForSegue.

0 голосов
/ 05 ноября 2018

Есть много способов сделать это:

  1. Определите вашу переменную в AppDelegate
  2. Используйте NSUserDefault для сохранения / извлечения вашей переменной
  3. Использовать синглтон-класс
  4. Использовать статическую переменную

Самым простым способом, конечно, является определение его как статической переменной в вашем глобальном .h файле.

Глобальные переменные не являются потокобезопасными. Поэтому лучше всего избегать их использования.

...