開篇:
當你還在忍耐傳統老套的講授,被專業術語弄的蒙頭轉向時,編程比喻橫空出世,且打個醬油再回。
賣萌結束,
protocol/delegate之間的愛恨情仇。
壽壽最近血汗來潮,注冊了1家公司iceAna,打算弄ios開發,心想:反正現在的公司沒業務,1臺電腦1個人足以。就這樣,代碼壽壽寫,設計壽壽弄,連拖地煮飯都得自己干!
重要壽壽開發的1款軟件得到了上市公司的欣賞,立馬給了500萬投資。壽壽心想,公司要做到看來靠1個人的時期結束了!TM最少先招個人打掃衛生,燒煮飯啊!因而他構思了下,覺得直接正式工太貴了,還是找個兼職的!發布了1則招聘啟事,內容以下:
1.會打掃衛生
2.會煮飯做菜
3.會發傳真
壽壽想的很遠,公司以后要做大,管理1定要做好,因而他決定給這個崗位設定為衛生員…..代號cleaner。就這樣招聘發布了好幾天,小黃來面試了,經過1番面試,壽壽很滿意:他滿足招聘啟事上所有內容。壽壽告知他:你這是兼職,但是我要你甚么時候來打掃衛生,甚么時候來做飯,隨叫隨到。平常你愛干啥干啥,我就叫你cleaner,行吧!小黃說可以。因而這個合同就這么簽訂了!
1天壽壽覺得公司亂的要命,也沒說名字,直呼“cleaner,來打掃下衛生,掃干凈就行,至于怎樣掃隨意你啦”。小黃接到傳喚馬上就來打掃衛生了。到了中午,壽壽餓了,通知cleaner:先煮飯。小黃馬上煮飯后告知壽壽弄定了,壽壽又說,燒下菜吧。因而小黃又忙開了。做完這些小黃就自由了 該干嗎干嗎去了!
而壽壽的生活還在繼續。
舉例代碼:
class A內容 都是示意代碼 不可運行:
protocol ToDoSomething:class{
func 做飯(controller:A)
func 拖地(controller:A)
}
class A{
var weak delegate:ToDoSomething?//或許發布了招聘啟事沒人呢 就是nil了
//以下兩個函數滿足地臟了 和要吃飯了 自動觸發!
func 地臟了就要清算(){
self.delegate.拖地(self) //self就是類A
}
func 要吃飯了就要做飯(){
self.delegate.做飯(self) //同上
}
}
class B內容 示意代碼:
//表示B遵守這個協議 必須要實現來證明他會
class B:ToDoSometing{
//B知道A在發布招聘啟事 應聘且成功了簽訂合同
//先取到A對象
A.delegate = self //設定好B就是A的應聘者且簽合同
func 做飯(controller:A){
//具體怎樣做 怎樣燒 燒怎樣 B來決定
}
func 拖地(controller:A){
//具體怎樣打掃為何它來定
}
}
注:
本文純屬瞎比喻,看過請忘記 謝謝!