协议、委托(代理)模式
注:本小节总结协议以及依靠协议实现委托,这将在以后经常被使用。是一个非常重要的模块
看下官方的定义:协议定义了一个蓝图 , 规定了用来实现某一特定工作或者功能所必须的方法和属性,类、结构体、或者枚举类型都可以遵循协议, 并提供具体实现来完成协议定义的方法和功能 。 任意能够满足协议要求的类型都被成为遵循了这个协议
1、协议的语法
协议的关键字:protocol
协议的语法:
protocol Pro1{
//这里定义属性或者方法
}
要使一个类或者结构体遵循某个协议 , Class1: Pro1
只需要冒号加上协议名称就可以了 。 这时候这个类就必须实现协议中的属性和方法 。(可选的可以不实现,后面会说)
2、 协议中对属性和方法的使用
- 对属性的使用
如果一个协议中定义的变量是可读可写的 那么遵循这个协议的必须是可读可写 ,也不能是常量 ,如果协议是只读的 , 实现者可以是只读 也可以是可读可写
在协议中使用类型属性 总是使用static
protocol Pro1{
var name:String{
set get} //可读可写
var age:Int { get } //只读属性
static var status:Int {
set get}
}
//遵循协议
struct Struct1 : Pro1 {
private var _name = ""
var name:String {
set{
_name = newValue
}
get{
return _name
}
}
var age = 18 //可以声明为可读可写的
static var status = 1 //类型方法。
}
class Class1