在 class 内初始化变量与不在 class 内初始化变量有什么区别??? - swift

Whats the difference between initializing a variable within a class VS without??? - swift

这是我的问题,我有一个初始化一次的变量,这样我就不必在每次要使用该变量时都调用数据库。我应该如何构建它?示例 1 或 2?将函数和变量放入 class 与不放入 class 有什么区别?

示例 1(无 class):

import UIKit

var username = "" 

func callToDatbase () {
// I run my code to set the username value equal to stored username value within the database
//Ex: username = database.username
}



---------------------------------------------------------------------------------------------------------
//Then when I want to call it in another view controller I would just say:
usernameLabel.text = username

示例 2(class):

import UIKit

class Initializers {

var username = ""

  func callToDatbase () {
    // I run my code to set the username value equal to stored username value within the database
    //Ex: self.username = database.username
  }

}


---------------------------------------------------------------------------------------------------------
//Then when I want to call it in another view controller I would just say:
usernameLabel.text = Initializers().username

当您在 class 之外初始化变量时,它存储在全局范围内。 swift 中的范围由大括号定义,因此您可以将 class 的外部视为大括号包围的整个项目。当您在 class 中定义变量时,只有当您将其实例化为对象时,它才会从 class 中可用。您可能想阅读有关继承的内容,以了解您还可以使用 classes.

中的变量做什么

TLDR:外部变量将对整个代码可用,而 class 内的变量只能在 class 或通过实例化对象将其作为 属性 访问。

示例代码:

class Example {
    var name = "Antoni"
}

print(name) // Will throw error

let example = Example() // Create an instance of the class
print(example.name) // Prints as expected

最好将变量放在某种 instantiable/destructible 结构中,例如 class 以帮助 swift 进行内存管理。在程序退出之前,全局定义的变量不会从内存中移除。如果您需要存储静态变量,请改用 struct。