//: Playground - noun: a place where people can play
import UIKit
/*
1> 协议的定义
2> 如何类遵守协议
3> 协议在代理设计模式中如何使用
4> 协议中方法的可选性
protocol前面需要加上@objc
方法前面加上 @objc optional
*/
// 1.协议的定义
protocol SportProtocol {
// 默认情况下协议中的方法都是必须实现的方法
func playBasketball()
func playFootball()
}
// 2.定义类,并且遵守协议
class Teacher : SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("打篮球")
}
}
class Student : NSObject, SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("打篮球")
}
}
// 3.协议在代理设计模型中的使用
/*
定义协议时, 协议后面最好跟上 : class
delegate的属性最好用weak, 用于防止产生循环引用
*/
protocol BuyTicketDelegate : class {
func buyTicket()
}
class Person {
// 定义代理属性
weak var delegate : BuyTicketDelegate?
func goToBeijing() {
delegate?.buyTicket()
}
}
// 4.如何让协议中的方法是可选方法
// optional属于OC特性, 如果协议中有可选的方法, 那么必须在protocol前面加上@objc, 也需要在optional前面加上@objc
@objc protocol TestProtocol {
@objc optional func test()
}
class Dog : TestProtocol {
func test() {
}
}
手把手带你学习Swift3.0(27):协议
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...