基本用途
- 可以用來(lái)聲明很多方法
不能聲明成員變量,只有.h文件 - 只要某個(gè)類(lèi)遵守了這個(gè)協(xié)議,就相當(dāng)于擁有了這個(gè)協(xié)議中的所有方法聲明
任何類(lèi)都可以使用協(xié)議,只要遵守它 - 只要父類(lèi)遵守了某個(gè)協(xié)議,就相當(dāng)于子類(lèi)也遵守了
二、格式
- 協(xié)議的編寫(xiě)
@protocol 協(xié)議名稱(chēng)
方法聲明列表
@end
@protocol myProtocol <NSObject>
@required //要求實(shí)現(xiàn),不實(shí)現(xiàn)就會(huì)發(fā)出警告
- (void)test1;
@optional //不要求實(shí)現(xiàn)
- (void)test2;
- 某個(gè)類(lèi)遵守協(xié)議
@interface 類(lèi)名:父類(lèi)<協(xié)議名稱(chēng)1,協(xié)議名稱(chēng)2>
@end
.h
#import "頭文件.h"
@interface Person:NSObject<myProtocol>
@end
.m
-(void)test1{
}
-(void)test2{
}
三、關(guān)鍵字
協(xié)議中有兩個(gè)關(guān)鍵字可以控制方法是否要實(shí)現(xiàn)默認(rèn)是@required,要求實(shí)現(xiàn),如果沒(méi)有實(shí)現(xiàn),會(huì)發(fā)出警告,在大多數(shù)情況下,用于程序員之間的交流
四、協(xié)議可以遵守協(xié)議協(xié)議繼承協(xié)議、擴(kuò)充一些方發(fā)聲明
@protocol MyProtocol3 <MyProtocol>
- (void)hehe;
@end