Swift类和结构体

关键词:Swift, iOS, 类, 结构体, class, struct

概述

类和结构体的区别

  • 结构体是值类型,传值(类似深拷贝)
  • 类是引用类型,传引用(类似浅拷贝)

类与结构体的相同点

  • 定义属性用于存储值
  • 定义方法用于提供功能
  • 定义下标操作用于通过下标语法访问它们的值
  • 定义构造器用于设置初始值
  • 通过扩展以增加默认实现之外的功能
  • 遵循协议以提供某种标准功能

类比结构体多的功能

  • 继承允许一个类继承另一个类的特征
  • 类型转换允许在运行时检查和解释一个类实例的类型
  • 析构器允许一个类实例释放任何其所被分配的资源
  • 引用计数允许对一个类的多次引用

示例

类和结构体的初始化

//可以设置属性的默认值
struct ImageStruct {
    var width = 100
    var height = 200
}

class FileClass {
    var fileTppe = ImageStruct()
    var name = "aa"
    var size = 11
}

//使用构造器语法来创建新的实例。属性均会被初始化为默认值
let stru1 = ImageStruct()
let file1 = FileClass()

print("width:\(stru1.width) height:\(stru1.height)")
print("name:\(file1.name)")

// 结构体不需要实现 init(width:Int, height:Int) {} 这个构造器,直接使用即可完成对属性的赋值。
let stru3 = ImageStruct(width: 12, height: 34)
print("stru3 width:\(stru3.width) height:\(stru3.height)")
// 打印:stru3 width:12 height:34