Image Description

类是面向对象编程,结构体是面向协议编程。

协议是一组属性和方法的定义,约定好属性和定义是什么样,如果一个类型要遵守这个协议,就要实现这个协议所定义的全部内容。面向对象编程的核心是继承、封装和多态。

面向协议编程是Apple在2015年WWDC上提出 Swift的一种编程范式,推荐开发者使用。

类和结构体的共同点

1.定义属性用于存储值
2.定义方法用于提供功能
3.定义下标操作用于允许使用下标语法访问实例所包含的值
4.定义构造器用于生成初始化值
5.通过扩展增加默认实现的功能
6.实现协议以提供某种标准功能

Swift 中类所特有的功能

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

什么时候使用类或结构体

当我们需要值语义的时候使用结构体 (值语义指一个对象被系统复制之后,与被复制的对象之前毫无关系,彼此独立发生改变互不影响)。

当需要引用语义的时候使用类 (引用语义指一个对象被系统复制之后,与被复制的对象之间依然共享底层资源,其中一个的改变会影响另一个对象的改变)。

定义一个类

class OneClass {
  //定义一个类
  var Name = "码客南君"
  var age = 2
}

定义一个结构体

struct OneStructure {
  //定义一个结构体
  var Name = "码客南君"
  var age = 2
}

类和结构体实例

let MarkClass = OneClass()
let MarkStructure = OneStructure()

访问属性

print("The name of MarkStructure is \(MarkStructure.name)")

初始化结构体中的属性

let MarkStructureTWO = OneStructure( name: "码客南君2", age: 3)

初始化结构体中的属性,并赋初值。