更改静态变量

Change static variable

我是 swift 中的新人。想问一下我走的路对不对

我有这样的东西:

class ViewController: UIViewController {

    struct myVars {
        var static short_text = ""
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        loadData()
        println(short_text)
    }

    func loadData() {
         myVars.short_text = "Hello world!"
    }
}

此代码有效。我在变量中有 "Hello world!" 字符串,我可以打印它。但是我问你这是不是一种重新定义静态变量的好方法?我这样做是因为我想在整个代码中使用这个变量。

感谢您的回答。

PS: 最后的方法要难得多。这是仅作为示例的短代码。

如果您的意图是让其他 classes(即其他视图控制器)可以访问此 ViewController 实例的变量,那么您不必使用 static.如果使 属性 可跨 class 的多个实例访问至关重要,则只需使用 static。我不认为那是你在这里的意图。

如果目的是在视图控制器之间传递数据,建议您参考:

  • How do you share data between view controllers and other objects in Swift?

  • How do you pass data between view controllers in Swift?

如果您搜索 "pass data between view controllers",您会发现很多其他类似的链接。

最重要的是,可以使用 static,但可能不是您想要的。


两个旁注:

  1. 您正在 struct 中使用 static。 Swift 1.2 消除了对该模式的需求。如果你真的需要 static (我认为你在这里不需要它),你可以将你的变量声明为 static 并消除 struct:

    static var shortText = ""
    
  2. 我不认为你使用 struct 意味着打开 "by-value vs by-reference" 讨论,但如果你这样做了,我可能会推荐你观看 WWDC 2015 视频 Building Better Apps with Value Types in Swift.