//: Playground - noun: a place where people can play
import UIKit
/*
1> 協(xié)議的定義
2> 如何類遵守協(xié)議
3> 協(xié)議在代理設(shè)計(jì)模式中如何使用
*/
//1.協(xié)議的定義
protocol SportProtocol {
//默認(rèn)情況下 ,協(xié)議中的方法,都要實(shí)現(xiàn)
func playBasketball()
func playFootball()
}
//2. 定義類, 并且遵守協(xié)議
class Teacher : SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("踢足球--222--")
}
}
class Student : NSObject, SportProtocol {
func playFootball() {
print("踢足球")
}
func playBasketball() {
print("踢足球--222--")
}
}
//4, 協(xié)議在代理中設(shè)計(jì)模式的使用
/*
定義協(xié)議時(shí),協(xié)議后面最好跟上: class ???
delegate 的屬性最好用weak, 用于防止產(chǎn)生循環(huán)引用
*/
protocol buyticketDelegate : class {
func buyTicket()
}
class Person {
//定義代理屬性
weak var delegate : buyticketDelegate?
func gotoBeijing() {
delegate?.buyTicket()
}
}
//5. 如何讓協(xié)議中方法時(shí)可選方法
//optional 屬于OC特性, 如果協(xié)議中有可選的方法, 那么必須在protocol 前面加上@objc,也需要在optional前面加上@objc
@objc protocol TestProtocol {
@objc optional func test()
}
class Dog : TestProtocol {
func test() {
}
}
Swift學(xué)習(xí) -協(xié)議
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 本篇將詳細(xì)總結(jié)介紹Swift協(xié)議的用法;協(xié)議是定義一些規(guī)范(屬性、功能方法),然后由類、結(jié)構(gòu)體或者枚舉遵循并實(shí)現(xiàn)這...
- 1.通過(guò)擴(kuò)展采納協(xié)議 2.通過(guò)空擴(kuò)展采納協(xié)議 當(dāng)一個(gè)類型已經(jīng)符合了每個(gè)協(xié)議中的所有要求,卻沒(méi)有聲明采納該協(xié)議時(shí),類...
- 1.協(xié)議的繼承 2.檢查協(xié)議的一致性 使用is操作符檢查實(shí)現(xiàn)實(shí)例是否采納了某個(gè)協(xié)議使用as操作符把實(shí)例類型轉(zhuǎn)換到指...
- 也不知道何時(shí)冒出了面向協(xié)議編程,很多文章都開(kāi)始大談面向協(xié)議編程,拋棄了之前都還暢談面向?qū)ο缶?。也許一個(gè)技術(shù)用久了,...
- WWDC 2015 - Session 408 - iOS, OS X, watchOS 本文核心基于 WWDC ...