gpt4 book ai didi

swift - 如何在函数中更新 Swift 中的全局变量

转载 作者:行者123 更新时间:2023-11-30 12:17:11 27 4
gpt4 key购买 nike

我正在学习 Swift,并且有一个关于将全局变量传递到要更改的函数中的问题。

如果我在类中有一个这样声明的全局变量:

var autoCount = 0

然后我想编写一些函数来管理更新,例如:

func updateAutoCount {
autoCount += 1
}

上面的内容是否可以接受,或者我应该像这样设置函数签名,即使我传递了一个随时可用的全局变量:

func updateAutoCount(autoCount: inout Int)  {
autoCount += 1
}

顺便说一句,我认为 autoCount 应该是一个全局变量而不是局部变量,因为我希望作用域是全局的,并且希望它在 View 可用时保留其值,而不是在函数调用的生命周期内保留其值。

谢谢

最佳答案

据我所知,这在语法上没有问题。该变量应该是可访问的,并且由于它是一个 var,因此您应该能够增加它。但是,根据您所描述的内容(希望变量与 View 一样存在),您最好对 View 进行子类化并对其进行增量。像这样的东西:

class AutocountingView: UIView {
private var autoCount = 0

func updateAutoCount() {
autoCount += 1
}
}

让某些东西成为全局的另一个选择(这也令人不悦,但稍微不那么令人讨厌)是将其包装在单例模式中。所以你会得到类似的东西:

class AutocountHelper {
static let shared = AutocountHelper()
var autoCount = 0

func updateAutocount() {
autoCount += 1
}
}

然后您可以通过 AutocountHelper.shared.updateAutocount() 访问它。

让变量成为全局变量通常不是最安全的想法,因为您最终可能会遇到命名空间问题(以及通常令人困惑的代码)。

关于swift - 如何在函数中更新 Swift 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45267122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com