1. 程式人生 > >代理模式的自我理解(一)

代理模式的自我理解(一)

delegate的函式往往要通過某些事件的觸發,才會自動呼叫的;比如uitableview的didselectrow函式,由於tableview.delegate=self等於自身,所以當觸發這個事件的時候,就會呼叫協議中的一個方法,而這個方法的實現就由self來實現,還有nsurlconnection,當建立連線後,就會出發didconnection這個函式,然後再具體實現,因為delegate指向的是self,當讓就由self來實現;說白了,就是設定誰為delegate,誰就收到了通知,而呼叫相應的方法,這個方法在協議裡已經聲明瞭,但是沒有具體實現,通常,方法名就是根據事件觸發名字來取的;例如:diddownload,didselectrow

對於不同類之間的設代理,比如a.delegate=b,即[a setdelegate:b],當a呼叫某個方法,比如搜尋某個itunes服務,當搜尋完畢後,告訴b,就會呼叫相應的方法,並且在b中是實現;誰是委託物件,誰就要去實現委託方法;

還有一種情況就是:下載解析,下載完成後,告訴解析類,我完成了,然後呼叫解析方法;解析.delegate=下載;解析類裡面加入下載協議;實現下載的功能;下載完成並且告知解析類;然後解析類再進行解析;