【发布时间】:2018-11-05 06:19:47
【问题描述】:
我想尝试创建一个可以在所有视图控制器中更改和访问的变量。我该怎么做呢?我正在考虑使用静态变量,或者在其中一个视图控制器中创建一个全局变量并传递它,但我不确定这是否是好的做法,或者是否会分别占用处理器。
【问题讨论】:
标签: objective-c variables uiviewcontroller static global-variables
我想尝试创建一个可以在所有视图控制器中更改和访问的变量。我该怎么做呢?我正在考虑使用静态变量,或者在其中一个视图控制器中创建一个全局变量并传递它,但我不确定这是否是好的做法,或者是否会分别占用处理器。
【问题讨论】:
标签: objective-c variables uiviewcontroller static global-variables
您不需要全局变量来在视图控制器之间共享状态,以这种方式隐藏依赖关系实际上是非常糟糕的做法。
通过依赖注入使其显式化,并在导航时将此对象从一个 VC 传递到下一个。
SecondViewController *viewController = [[SecondViewController alloc] init];
viewController.user = self.user; // Pass the user along...
[self presentViewController:viewController animated:YES completion:nil];
你可以对 segue 做类似的事情,在 prepareForSegue 方法中传递你的对象。
【讨论】:
有很多方法可以做到这一点:
AppDelegate 中定义您的变量
NSUserDefault 存储/检索您的变量当然,最简单的方法是将其定义为全局 .h 文件中的静态变量。
全局变量不是线程安全的。因此,最佳做法是尽可能避免使用它们。
【讨论】: