首先邢笙,讓我們看看為什么要使用delegate。
一個典型的ios應(yīng)用程序會有各種類型的對象:windows腥寇,tables成翩,buttons,input boxes等等赦役。在一個特定的應(yīng)用程序中麻敌,你會讓每個對象做特定的事情。比如說當(dāng)用戶點擊一個按鈕的時候掂摔,會執(zhí)行一個特定的操作或者使用一個table顯示特定的數(shù)據(jù)术羔。
每個對象實例會有處理特定的事情。比如說我們有一個UITableView的實例乙漓,我們可能會讓它以特定的方式來顯示特定的 數(shù)據(jù)级历,同樣的,我們對table的每一行進行tapping或者swiping操作的時候叭披,它們也會做出自己特有的事件處理方式寥殖。為了避免為達到某一個特定的目的(actions or events)而創(chuàng)建一個子類(如果有多種不同的特定目的就會創(chuàng)建多個子類),你可以寫出響應(yīng)這些操作或者事件的方法涩蜘,它們會在這些操作或者事件發(fā)生的時候被調(diào)用嚼贡,為了達到此目的,你只需要給這個對象一個delegate(一個對象)同诫。你可以使一個類作為其他一個對象或者多個對象的delegate粤策。
簡單的說代理就是在類外,讓特定的人對該類做特定的操作的一種實現(xiàn)方法误窖。