开篇:
当你还在忍耐传统老套的讲授,被专业术语弄的蒙头转向时,编程比喻横空出世,且打个酱油再回。
卖萌结束,
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){
//具体怎样打扫为何它来定
}
}
注:
本文纯属瞎比喻,看过请忘记 谢谢!