首页 > 解决方案 > 使用全局变量在 ViewController 之间传递数据的缺点是什么?

问题描述

我是 Swift 新手,来自 C 和 Java 背景。

我正在尝试将一个结构(称为“播放器”)对象从一个视图控制器传递到另一个视图控制器,并且据我所知,一种正确的做法是首先在目标 VC 中定义它,例如:

class TargetVC: UIViewController {

     var playerVar: Player!
}

然后在源 VC 中的准备函数中分配它:

 if let targetVC = segue.destination as? TargetVC 
    {
        targetVC.playerVar = myPlayer
    }

但我考虑过简单地使用全局变量将Player对象传递给目标视图控制器,方法如下:

var myPlayer = Player() // Global Variable

class SourceVC: UIViewController {

}

然后在目标 VC 中达到它:

class TargetVC: UIViewController {

     myPlayer.name =  // Stuff
}

这种方法会在运行时引起任何问题还是有任何缺点?如果是,它们是什么?

提前致谢。

标签: iosswift

解决方案


顾名思义,一个缺点是,所有东西都可以访问全局变量,即使是没有理由看到,更不用说修改该数据的东西。


推荐阅读