我是Swift的新手,来自C和Java背景。
我正在尝试将一个结构(称为“播放器”)对象从一个视图控制器传递给另一个,而据我了解,一种正确的方法是首先在目标VC中定义它,例如:
class TargetVC: UIViewController {
var playerVar: Player!
}
然后在源VC内的prepare函数中分配它:
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
}
此方法会在运行时引起任何问题还是有缺点?如果是,那是什么?
谢谢。
答案 0 :(得分:0)
一个缺点是,顾名思义,所有东西都可以访问全局变量,即使是没有理由要查看的东西,更不用说修改数据了。
答案 1 :(得分:0)
Passing data
使您即使在示例中也可以遵循编程原则来构建良好的类。在许多情况下,它使类更可扩展和可重用。
Global var
在获取所需数据方面具有一些优势,但是您必须关心reference cycles
,memory managing
,处理threads
,queues
和{{1 }}等
您还可以阅读有关blocks
,singletones
,...的信息–您可以在其中从类范围变量中获取一些数据。