第 4 章 協(xié)議與分類
第 23 條:通過委托與數(shù)據(jù)源協(xié)議進(jìn)行對象間通信
@optional
if ([_delegate respondsToSelector:@selector(networkFetcher:didiReceiveData:)]) {
[_delegate networkFetcher:self didReceiveData:data];
}
- 委托模式為對象提供了一套接口,使其可由此將相關(guān)事件告知其他對象筏勒。
- 將委托對象應(yīng)該支持的接口定義成協(xié)議遮精,在協(xié)議中把可能需要處理的事件定義成方法居夹。
- 當(dāng)某對象需要從另外一個(gè)對象中獲取數(shù)據(jù)時(shí)败潦,可以使用委托模式。這種情景下准脂,該模式亦稱“數(shù)據(jù)源協(xié)議”劫扒。
- 若有必要,可實(shí)現(xiàn)含有尾段的結(jié)構(gòu)體狸膏,將委托對象是否能夠響應(yīng)相關(guān)協(xié)議方法這一信息緩存至其中沟饥。
第 24 條:將類的實(shí)現(xiàn)代碼分散到便于管理的數(shù)個(gè)分類之中 - 使用分類機(jī)制把類的實(shí)現(xiàn)代碼劃分成易于管理的小塊。
- 將應(yīng)該視為“私有”的方法歸入名叫 Private 的分類中湾戳,以隱藏實(shí)現(xiàn)細(xì)節(jié)贤旷。
第 25 條:總是為第三方類的分類名稱加前綴 - 向第三方類中添加分類時(shí),總應(yīng)給其名稱加上你專用的前綴砾脑。
- 向第三方類中添加分類時(shí)幼驶,總應(yīng)給其中的方法名加上你專用的前綴。
第 26 條:勿在分類中聲明屬性 - 把封裝數(shù)據(jù)所用的全部屬性都定義在主接口里韧衣。
- 在“ class-continuation 分類”之外的其他分類中盅藻,可以定義存取方法,但盡量不要定義屬性畅铭。
第 27 條:使用 “class-continuation 分類”隱藏實(shí)現(xiàn)細(xì)節(jié)
第 28 條:通過協(xié)議提供匿名對象