Swift 协议编程全解析
1. 协议基础
协议是 Swift 中一个强大的特性,它定义了一组方法、属性和其他要求,任何遵循该协议的类型都必须实现这些要求。
1.1 读写属性和方法要求
例如,一个 FullName
协议可能要求实现一个 getFullName()
方法和两个读写属性 firstName
和 lastName
:
protocol FullName {
var firstName: String { get set }
var lastName: String { get set }
func getFullName() -> String
}
1.2 可变方法
对于值类型(如结构体),如果一个方法要修改其所属的实例,必须在方法定义前加上 mutating
关键字。例如:
mutating func changeName()
需要注意的是,如果将方法要求标记为 mutating
,在采用该协议的引用类型(类)中不需要写 mutating
关键字, mutating
关键字仅用于值类型(结构体或枚举)。