//: 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):协议
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。