【问题标题】:How to Store Variable that is Changed In all ViewControllers如何存储在所有 ViewController 中更改的变量
【发布时间】:2018-11-05 06:19:47
【问题描述】:

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

【问题讨论】:

    标签: objective-c variables uiviewcontroller static global-variables


    【解决方案1】:

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

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

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

    你可以对 segue 做类似的事情,在 prepareForSegue 方法中传递你的对象。

    【讨论】:

    • 所以如果我有一个 NSMutableArray,我应该把它传递给 ViewControllers。
    • 我不建议传递原始可变数组,创建一个对象来封装数组和任何相关状态。
    【解决方案2】:

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

    1. 在AppDelegate 中定义您的变量
    2. 使用NSUserDefault 存储/检索您的变量
    3. 使用单例类
    4. 使用静态变量

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      相关资源
      最近更新 更多