如何在所有ViewControllers中存储已更改的变量



我想尝试创建一个可以在所有视图控制器中更改和访问的变量。我该怎么做?我想使用一个静态变量,或者在其中一个视图控制器中创建一个全局变量并传递它,但我不确定这是一个好的做法,还是会占用处理器。

您不需要全局变量来在视图控制器之间共享状态,而且以这种方式隐藏依赖关系实际上是非常糟糕的做法。

通过依赖项注入使其显式,并在导航时将此对象从一个VC传递到下一个VC。

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

您可以对segues执行类似的操作,在prepareForSegue方法中传递对象。

有很多方法可以做到这一点:

  1. AppDelegate中定义变量
  2. 使用NSUserDefault存储/检索变量
  3. 使用singleton类
  4. 使用静态变量

当然,最简单的方法是在全局.h文件中将其定义为静态变量。

全局变量不是线程安全的。因此,最佳实践是尽可能避免使用它们。

最新更新