swift 中如何确定该使用 class 还是 struct

159 阅读2分钟

区别

  1. 继承:class 支持继承,而 struct 不支持。
  2. 内存管理:class 是引用类型,而 struct 是值类型。这意味着当你将一个 class 实例赋值给一个变量或常量时,实际上是将一个指向该实例的引用赋值给了变量或常量。而当你将一个 struct 实例赋值给一个变量或常量时,实际上是将该实例的值复制给了变量或常量。因此,对于 class 实例,多个变量或常量可以引用同一个实例,而对于 struct 实例,每个变量或常量都有自己的副本。
  3. 初始化:class 有一个默认的成员初始化器,而 struct 没有。这意味着你必须为 struct 的每个成员定义一个初始值,或者为 struct 定义一个自定义的初始化器。
  4. 可变性:当你将一个 class 实例赋值给一个变量时,你可以修改该实例的属性和方法。而当你将一个 struct 实例赋值给一个变量时,你不能修改该实例的属性和方法,除非该变量被声明为 var 而不是 let。

如何选择

当你需要使用继承、需要共享实例、需要使用引用类型或需要使用类的其他高级特性时,应该使用 class。当你需要使用值类型、需要避免共享实例、需要使用复制语义或需要使用 struct 的其他高级特性时,应该使用 struct。

  • 如果你的数据类型表示一个实体,例如一个人、一本书或一辆车,你应该使用 struct。
  • 如果你的数据类型表示一个对象,例如一个视图控制器、一个网络服务或一个数据库连接,你应该使用 class。
  • 如果你需要使用继承或需要共享实例,你应该使用 class。
  • 如果你需要使用值类型或需要避免共享实例,你应该使用 struct。

太长不想看

  • 对于新手: 只要不使用继承,就无脑用 struct ,后面满足不了再换 class 就行。
  • 对于老手:老手不会问这种问题 :)。