ios - 使用全局变量在 ViewController 之间传递数据有哪些缺点?

标签 ios swift

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

我正在尝试将一个结构(称为“Player”)对象从一个 View Controller 传递到另一个 View Controller ,据我所知,一种正确的方法是首先在目标 VC 中定义它,如下所示:

class TargetVC: UIViewController {

     var playerVar: Player!
}

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

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

但我考虑简单地使用全局变量将 Player 对象传递给目标 View Controller ,方法如下:

var myPlayer = Player() // Global Variable

class SourceVC: UIViewController {

}

然后在目标 VC 中达到它:

class TargetVC: UIViewController {

     myPlayer.name =  // Stuff
}

这种方法在运行时会导致任何问题吗?或者有什么缺点吗?如果是,它们是什么?

提前致谢。

最佳答案

传递数据使您能够遵循编程原则来构建良好的类,即使在您的示例中也是如此。在许多情况下,它使类更具可扩展性和可重用性。

全局变量在获取所需数据方面具有一些优势,但您必须关心引用循环内存管理、句柄线程队列 block

您还可以阅读有关singletonesstatic vars...的内容 - 您可以在其中从类作用域变量中获取一些数据。

关于ios - 使用全局变量在 ViewController 之间传递数据有哪些缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55573404/

相关文章:

ios - 从通用返回类型获取实际类型

ios - arc4random 和 arm64 与 swift

ios - 无法在应用程序和今日扩展程序之间共享数据

ios - WebView iOS 不保存 session 或 cookie

ios - Swift MVVM 绑定(bind)(使用装箱)

ios - CoreData OneToMany 错误

iphone - 方法声明错误 textfielddidbeginediting

ios - 在 iOS 中打乱希腊语单词会打印出未知符号

ios - AVAssetResourceLoaderDelegate 方法覆盖 loadingRequest

swift - 核心数据 : Not null property should be optional?