Swift中的Struct和Class是两种不同的数据类型,它们具有以下区别:
- 值类型和引用类型:Struct是值类型,每次传递或赋值时会进行拷贝,而Class是引用类型,每次传递或赋值时会传递指针。
- Copy on write和Automatically reference counted:Struct在拷贝时会自动进行copy on write,而Class会自动进行引用计数。
- 适合编程风格:Struct更适合函数式编程,而Class更适合面向对象编程。
- 继承支持:Struct不支持继承,而Class可以支持单继承。
- 初始化方式:Struct的“免费”初始化会初始化所有变量,而Class的“免费”初始化不会初始化任何变量。
- 可变性:Struct的可变性必须显式声明,而Class默认是可变的,即使使用let声明。
- 一般使用情况:Struct是您首选的数据结构,而Class则用于特定情况,如MVVM中的ViewModel。
- 枚举:枚举是值类型,每个状态都可以有关联数据。
在SwiftUI中,可以使用switch语句处理枚举类型的值。枚举类型可以定义不同成员,匹配不同值,并执行相应操作。同时,SwiftUI中的View协议非常简单,只需要遵循它的对象实现一个返回Some View的body方法即可,但是为了实现各种视图属性和修饰,还需要写无数的extension。通过这些扩展和约束,Swift和SwiftUI能够更加灵活和高效地处理各种数据和视图。