swift Struct与Class

  • 内容
  • 评论
  • 相关

相同点

  • 它们可以定义属性来存储值,也可以定义函数
  •  它们可以定义下标以提供对值的访问下标语法(Subscript Syntax)
  • 它们可以定义初始化器来设置它们的初始状态,使用init()
  • 它们可以扩展(Extensions in Swift Explained)

区别

类支持一些结构没有的功能

  •  类可以从另一个类继承,就像从创建自己的视图控制器子类
  • 类可以去初始化(deinit),也就是说你可以在类被销毁之前调用一个函数
  • 类是引用类型(Reference Type),结构是值类型(Value Type)

什么时候使用结构

  • 简单的数据类型
  • 多线程环境中
  • 当结构的属性大部分也是值类型时

什么时候使用类

如果需要类的特定特性,建议使用类。如前所述,类有一些结构没有的额外特征:

  • 可以从另一个类继承,这是用结构无法做到的
  • 类可以去初始化,也就是说,它们可以实现一个deinit函数,您可以对同一个类进行一个或多个引用(即,类是引用类型)
  •  类带有内置的概念identity 同一性,您可以检查两个引用(变量、常量、属性等)是否引用同一个对象

这里需要注意的是,如果您想在 Swift 和 Objective-C 之间进行互操作,则需要使用类。如果需要 Objective-C 互操作性,则需要使用类。例如,如果您希望在 Realm 数据模型中使用@objc 和动态,那么该模型必须是一个类。

仅次于引用和值类型,继承是类和结构之间最重要的区别。使用类,您可以清楚地定义子类和超类之间的父子连接。

总之,如果您需要只有类才能提供的特性: 继承、标识、 Objective-C 互操作性,以及复制值没有意义的场景,那么使用类是明智的。

部分引用自https://learnappmaking.com/struct-vs-class-swift-how-to/

评论

0条评论

发表评论

电子邮件地址不会被公开。