protocol
- protocol是用來聲明一些方法的,也就是說protocol是由一系列方法聲明組成的
protocol語法格式
@protocol 協(xié)議名稱
// 方法聲明列表
@end
- 類遵守協(xié)議
- 一個(gè)類可以遵守一個(gè)或者多個(gè)協(xié)議
- 任何類只要遵守了protocol,就相當(dāng)于擁有了protocol中所有方法的聲明
@interface 類名:父類<協(xié)議名稱1,協(xié)議名稱2,......>
@end
protocol 和繼承的區(qū)別
- 繼承之后默認(rèn)就有實(shí)現(xiàn),protocol只有聲明沒有實(shí)現(xiàn)
- 相同類型的類可以使用繼承,不同類型的類智能使用protocol
protocol的使用注意
- protocol只有一個(gè)用途,就是用來聲明方法,不能聲明成員變量,不能寫實(shí)現(xiàn)
- 只要父類遵守了某個(gè)協(xié)議,那么子類也遵守
- OC是單繼承,但是可以遵守多個(gè)協(xié)議
- 協(xié)議可以遵守協(xié)議,一個(gè)協(xié)議遵守另一個(gè)協(xié)議,就可以擁有另一個(gè)協(xié)議中的方法聲明
基協(xié)議
- 基協(xié)議:NSObject,是最基本的協(xié)議
- 建議每一個(gè)新的協(xié)議都要遵守NSObject協(xié)議
@required和@optional關(guān)鍵字
- 這兩個(gè)關(guān)鍵字用于程序員之間交流
- @required:這個(gè)方法必須要實(shí)現(xiàn),若不實(shí)現(xiàn),編譯器發(fā)出警告
- @optional:這個(gè)方法不一定要實(shí)現(xiàn)
@protocol SportDelegate <NSObject>
@required
- (void)playFootball;
@optional
- (void)palyBasketball;
@end
代理設(shè)計(jì)模式
- 當(dāng)A對象發(fā)生一些行為,想告知B對象(讓B對象稱為A對象的代理對象)
- 當(dāng)B對象想監(jiān)聽A對象的一些行為(讓B對象成為A對象的代理對象)
- 當(dāng)A對象無法處理某些行為的時(shí)候,想讓B對象幫忙處理(讓B對象稱為A對象的代理對象)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。