協(xié)議:
OC中的協(xié)議類似于Java中的接口上遥,是一個(gè)功能方法的集合招盲,但協(xié)議本身不是一個(gè)類不會(huì)自己去實(shí)現(xiàn)協(xié)議里的方法诈嘿,而是委托其他任何類去使用實(shí)現(xiàn)均牢,通常用來(lái)實(shí)現(xiàn)委托代理設(shè)計(jì)模式糠雨,實(shí)現(xiàn)不同類對(duì)象之間的事件消息通信。
協(xié)議中的方法默認(rèn)都是@required類型的徘跪,也就是使用該協(xié)議的類必須實(shí)現(xiàn)協(xié)議里的這些方法甘邀。而明確使用@optional修飾的方法可以被使用的類選擇性的去實(shí)現(xiàn)。
代理:
代理是一種設(shè)計(jì)模式垮庐,又叫‘委托’松邪,指的是一個(gè)類對(duì)象在某些特定時(shí)刻通知到其他類的對(duì)象去做一些任務(wù),但不需要獲取到那些類對(duì)象的指針哨查,兩者共同來(lái)完成一件事逗抑,實(shí)現(xiàn)不同對(duì)象之間的通信。
作用主要是大大減小了對(duì)象之間的耦合度寒亥,是代碼邏輯更加清晰有序邮府,減少了框架復(fù)雜度,也便于代碼的維護(hù)擴(kuò)展护盈。另外消息的傳遞過程可以有參數(shù)回調(diào)挟纱,類似于Java的回調(diào)監(jiān)聽機(jī)制,大大提高了編程的靈活性腐宋。