Swift 在视图控制器之间转换时,使用静态变量是否是存储变量的良好实践?

Swift 在视图控制器之间转换时,使用静态变量是否是存储变量的良好实践?,swift,static,sprite-kit,global-variables,Swift,Static,Sprite Kit,Global Variables,我正在使用spriteKit创建一个游戏。在横向模式下,显示游戏板,切换到纵向时,显示信息屏幕。现在,回到横向模式,重新初始化游戏板,重置在切换设备方向之前所做的所有更改 我通过使用静态变量将数据存储在类中解决了这个问题。这是可行的,但这种方法似乎存在一些问题。由于静态变量几乎可以在整个应用程序中访问,并且它们总是包含一个值,因此在我看来,它们似乎接近于全局变量。我知道它们不一样,但将永久变量保留在后台听起来像是占用了大量内存,从而耗尽了性能 我说的对吗,还是没问题?如果这是一种不好的方法,那么

我正在使用
spriteKit
创建一个游戏。在
横向
模式下,显示游戏板,切换到
纵向
时,显示信息屏幕。现在,回到
横向
模式,重新初始化游戏板,重置在切换设备方向之前所做的所有更改

我通过使用
静态
变量
数据存储在
类中
解决了这个问题。这是可行的,但这种方法似乎存在一些问题。由于
静态变量
几乎可以在整个应用程序中访问,并且它们总是包含一个值,因此在我看来,它们似乎接近于
全局变量
。我知道它们不一样,但将永久
变量
保留在后台听起来像是占用了大量内存,从而耗尽了性能

我说的对吗,还是没问题?如果这是一种不好的方法,那么在
视图控制器
之间切换时应如何保存状态


从我所读到的内容来看,
静态
变量是否为“OK”有点不明确,所以我希望这方面有一个明确的答案(如果有)

优势

  • 可以执行元对象操作(例如在创建对象之前验证某些内容,记录对象的数量)

  • 可以执行与对象无关但仍希望将其绑定到类的操作

  • 缺点

    通常使用静态变量有时会由于不同对象的访问而导致问题

  • 不绑定到对象,因此不反映纯面向对象 接近

  • 需要同步,以避免多次更新冲突 对象和线程。它确实提到了为什么有时使用 静态函数和变量可能不好

  • 查看以下文章以了解更多信息,


    希望它能有所帮助

    在文章的开头,你谈论的是转换方向,但在文章的结尾,你开始谈论在风投之间转换。那么,这是否意味着你通过旋转设备在VCs之间切换?请确保你覆盖(线程安全、代码隐式)@Sweeper哦,对不起,让我澄清一下。当我切换设备的方向时,我也会切换viewController,因此来自上一个viewController的实例数据将消失。@Sanad Barjawi Ok,谢谢,将查找它。你没有一个好的资源可以共享吗?嗯,那篇文章对lol的主题非常清楚。但是我的问题仍然是使用什么来保存viewController状态。使用委托或闭包在两个控制器之间传递状态,或者你可以使用UserDefaults。