Delegate、Category、Extension

Delegate

是把一個類本身須要作的一部分事情,讓另外一個類(也能夠就是本身自己)來完成。 
delegate的方法在被委託的類中必須實現。設計模式

設計模式中的委託模式。ide

Category

即便在你不知道一個類的源碼狀況下,向這個類添加擴展的方法。ui

經過在interface中聲明一個額外的方法而且在implementation 中定義相同名字的方法便可,沒必要實現。分類的名字(括號括起來)表示的是:對於聲明於其餘地方的這個類,在此處添加的方法是額外的,而不是表示這是一個新的類。你不能夠經過分類爲一個類添加額外的成員變量。雖然Category不可以爲類添加新的成員變量,可是Category包含類的全部成員變量,即便是@private的。Category能夠從新定義新方法,也能夠override繼承過來的方法。要添加額外方法,分類必須在第一個@interface中聲明方法。設計

設計模式中的策略模式。繼承

Extension

類擴展就像匿名(沒有那個括號裏面的名字)的分類同樣,除了同樣不一樣的是,類擴展聲明必須在@implementation在實現。 
類擴展中添加的方法是一個required API,若是不去實現,編譯器會警告,並且這個方法的聲明能夠不在第一個@interface中去聲明。編譯器

相關文章
相關標籤/搜索