有一些关于如何为Swift 编写代码static constant
以及如何static variable
在Swift中编写代码的文章。但尚不清楚何时使用static constant
和static variable
而不是constant
和variable
。有人可以解释吗?
当您在类(或结构)中定义静态var / let时,该信息将在所有实例(或值)之间共享。
class Animal {
static var nums = 0
init() {
Animal.nums += 1
}
}
let dog = Animal()
Animal.nums // 1
let cat = Animal()
Animal.nums // 2
如您在这里看到的,我创建了2个单独的实例,Animal
但是它们确实共享相同的静态变量nums
。
通常使用静态常数来采用Singleton模式。在这种情况下,我们希望分配的类实例不超过1个。为此,我们将对共享实例的引用保存在常量中,并隐藏初始化器。
class Singleton {
static let sharedInstance = Singleton()
private init() { }
func doSomething() { }
}
现在,当我们需要Singleton
实例时,我们编写
Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()
这种方法的确允许我们始终使用相同的实例,即使在应用程序的不同点也是如此。
我想问一个问题,什么时候在Java中使用静态变量/方法或实例变量/方法更有利? 我知道这取决于特定的情况(比如将util类编程为静态方法),但是我们能声明一些像通用策略一样的东西吗?
问题内容: 在Swift中,我看到一些类似的方法: 我想知道何时使用@objc?我读了一些文档,但他们说要在Objective-C中调用它时,应添加@objc标志 但是,这是Swift中的私有函数,@ obj的作用是什么? 问题答案: private表示仅在Swift中可见。因此使用@objc在Objective-C中可见。如果您有功能可以快速选择私有功能,则需要此功能。 @objc属性使您的Sw
问题内容: 在什么情况下,您将使用字段变量而不是局部变量?我发现很难决定何时在类中的2个或更多方法中使用变量。我倾向于使用局部变量,并将它们传递给另一种方法。 谢谢, 莎拉 问题答案: 用面向对象的术语来说,变量作为对象的属性有意义吗?如果是这样,则应将其设为字段变量。如果没有,它可以任意选择。 记住单一责任原则-设计良好的班级应该只承担1个责任,因此只有1个改变的理由。
问题内容: 何时加载静态变量,运行时或编译时?有人可以解释一下吗? 我非常感谢您的帮助。 谢谢。 问题答案: 它们在运行时加载。 静态表示:该变量属于该类,而不属于该类的实例。因此,每个静态变量只有一个值,如果您有该类的n个实例,则没有n个值。
问题内容: 什么时候使用是个好主意? 我有时会在PHP的代码示例中看到这一点。这样可以处理DOS / Mac / Unix终端问题吗? 问题答案: 是的,表面上用来以跨平台兼容的方式查找换行符,因此它可以处理DOS / Unix问题。 请注意,PHP_EOL表示 _当前_系统的结束符。例如,在类似Unix的系统上执行时,它将找不到Windows终端行。
问题内容: 在android中,推荐使用静态变量吗?例如,用Java实现Singleton模式,我通常这样做: 此外,Android JVM何时可以清除此漏洞? 问题答案: 字段会整体附加到实例,而实例又附加到加载了类的。整个回收时将被卸载。我确信这会在销毁该应用程序时发生(不是在它进入后台或暂停但完全关闭时发生)。 因此,只要你的应用程序运行,就可以将其视为生存。Singleton是个好主意吗?