// associatedtype 关键字 用来声明一个类型的占位符作为协议定义的一部分
protocol LXFViewModelType {
associatedtype Input
associatedtype Output
func transform(input: Input) -> Output
}
/*
定义协议时候,协议后面最好跟上class
delegate的属性最好用weak,用于防止循环引用
*/
protocol BuyTicketDelegate : class{
func buyTicket()
}
class Person22{
weak var delegate:BuyTicketDelegate?
func gotoBeiJing() {
delegate?.buyTicket()
}
}
/*
定义可选类型的协议
optional属于OC特性,如果协议中油可选的方法,那么必须在protocol前面加上@objc,也需要在optional前面加上@objc
*/
@objc protocol TestProtocol{
@objc optional func test()
}
class Dog:TestProtocol{
}