更改静态变量
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
,但可能不是您想要的。
两个旁注:
您正在 struct
中使用 static
。 Swift 1.2 消除了对该模式的需求。如果你真的需要 static
(我认为你在这里不需要它),你可以将你的变量声明为 static
并消除 struct
:
static var shortText = ""
我不认为你使用 struct
意味着打开 "by-value vs by-reference" 讨论,但如果你这样做了,我可能会推荐你观看 WWDC 2015 视频 Building Better Apps with Value Types in Swift.
我是 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
,但可能不是您想要的。
两个旁注:
您正在
struct
中使用static
。 Swift 1.2 消除了对该模式的需求。如果你真的需要static
(我认为你在这里不需要它),你可以将你的变量声明为static
并消除struct
:static var shortText = ""
我不认为你使用
struct
意味着打开 "by-value vs by-reference" 讨论,但如果你这样做了,我可能会推荐你观看 WWDC 2015 视频 Building Better Apps with Value Types in Swift.