協(xié)議(Protocol)類(lèi)似Java中的接口,它是一個(gè)功能方法的集合舵盈。協(xié)議本身不是一個(gè)類(lèi)毡咏,不能自己實(shí)現(xiàn)協(xié)議里的方法驮宴,而是委托其他類(lèi)去實(shí)現(xiàn)。通常用來(lái)實(shí)現(xiàn)委托代理設(shè)計(jì)模式呕缭,實(shí)現(xiàn)不同類(lèi)對(duì)象之間的時(shí)間消息通信堵泽。協(xié)議中的方法默認(rèn)都是@required,即使用該協(xié)議的類(lèi)必須實(shí)現(xiàn)協(xié)議里的這些方法恢总。開(kāi)發(fā)者也可以使用@optional來(lái)選擇性地實(shí)現(xiàn)某個(gè)方法迎罗。
代理(Delegate)是一種設(shè)計(jì)模式,在Objective-C中通過(guò)協(xié)議(Protocol)來(lái)實(shí)現(xiàn)片仿∥瓢玻可以使一個(gè)對(duì)象在特定時(shí)刻通知其他類(lèi)的對(duì)象去實(shí)現(xiàn)任務(wù),不需要獲取那些對(duì)象的指針砂豌,實(shí)現(xiàn)不同對(duì)象之間的通行厢岂。