//: 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):協議
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。