//: Playground - noun: a place where people can play
import UIKit
/*
1> 协议的定义
2> 如何类遵守协议
3> 协议在代理设计模式中如何使用
*/
//1.协议的定义
protocol SportProtocol {
//默认情况下 ,协议中的方法,都要实现
func playBasketball()
func playFootball()
}
//2. 定义类, 并且遵守协议
class Teacher : SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("踢足球--222--")
}
}
class Student : NSObject, SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("踢足球--222--")
}
}
//4, 协议在代理中设计模式的使用
/*
定义协议时,协议后面最好跟上: class ???
delegate 的属性最好用weak, 用于防止产生循环引用
*/
protocol buyticketDelegate : class {
func buyTicket()
}
class Person {
//定义代理属性
weak var delegate : buyticketDelegate?
func gotoBeijing() {
delegate?.buyTicket()
}
}
//5. 如何让协议中方法时可选方法
//optional 属于OC特性, 如果协议中有可选的方法, 那么必须在protocol 前面加上@objc,也需要在optional前面加上@objc
@objc protocol TestProtocol {
@objc optional func test()
}
class Dog : TestProtocol {
func test() {
}
}
网友评论