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/
发表回复