swift最新语法总结(协议)
2019-03-25 本文已影响0人
coder_xiang
协议的格式
协议的定义方式与类,结构体,枚举的定义都非常相似
protocol SomeProtocol {
// 协议方法
}
遵守协议的格式
class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol {
// 类的内容
// 实现协议中的方法
}
协议的基本使用
定义协议和遵守协议
// 1.定义协议
protocol SportProtocol {
func playBasketball()
func playFootball()
}
// 2.遵守协议
// 注意:默认情况下在swift中所有的协议方法都是必须实现的,如果不实现,则编译器会报错
class Person : SportProtocol {
var name : String?
var age : Int = 0
// 实现协议中的方法
func playBasketball() {
print("人在打篮球")
}
func playFootball() {
print("人在踢足球")
}
}
协议之间的继承
protocol CrazySportProtocol {
func jumping()
}
protocol SportProtocol : CrazySportProtocol {
func playBasketball()
func playFootball()
}
代理设计模式
协议继承用于代理设计模式
protocol BuyTicketProtocol {
func buyTicket()
}
class Person {
// 1.定义协议属性
var delegate : BuyTicketProtocol
// 2.自定义构造函数
init (delegate : BuyTicketProtocol) {
self.delegate = delegate
}
// 3.行为
func goToBeijing() {
delegate.buyTicket()
}
}
class HuangNiu: BuyTicketProtocol {
func buyTicket() {
print("买了一张火车票")
}
}
let p = Person(delegate: HuangNiu())
p.goToBeijing()
协议中方法的可选
// 1.定义协议
@objc
protocol SportProtocol {
func playBasketball()
optional func playFootball()
}
// 2.遵守协议
class Person : SportProtocol {
var name : String?
var age : Int = 0
// 实现协议中的方法
@objc func playBasketball() {
print("人在打篮球")
}
}