1.協議:就是用來聲明一大堆方法的,供遵守這個協議的對象使用的
2.語法:
@protocol 協議名稱 <NSObject,其他協議> //定義方法(僅時方法的聲明) @end
NSObject是所有協議的基協議,最好是所有協議都遵守基協議
3.類遵守協議,那么這個類默認情況下,就會擁有這個協議內的所有的方法
語法
@interface 類名: 父類 < 協議名1,...>
@end
4.協議遵守協議
語法
@protocol 協議名 <其他協議,...>
@end
5.協議中聲明方法的關鍵字
@required:在遵守某個協議時,必須實現該關鍵字修飾對方法(字面上是必須的,實際要求沒那么嚴格),否則會有警告的(默認的)
@optional:可以實現也可以不實現該關鍵字修飾的方法
eg.@required
- (void) xxx;
6.在定義變量時,可以限制這個變量保存的對象去遵守某個協議
類名 <協議名稱> *變量名 ; =》也就是說這個變量必須是某個類型的,並且這個類還必須遵守了這個協議的
id <協議名稱> 變量名 ; =》id表示任意的oc對象類型,相當於NSObject *類型,
7.property聲明屬性時,也可也用協議限制該屬性
@property(nonatomic,strong) id<協議名> 屬性名; =》這是一種設計模式,這樣這個屬性類型可以是遵守了這個協議的任何一種類型
@property(nonatomic,strong) 類名<協議名> 屬性名; =》定死是哪個類型的了,並且這個類必須遵守這個協議
8.定義協議的位置;可以是在一個單獨的.h文件中定義(一般會有多個類去遵守的情況),也可以直接定義在搖遵守的那個類的.h文件中
9.@protocol:用於聲明一個協議
類似於@class,僅時做一個聲明,在編譯的時候告訴編譯器,並不包含文件里的內容,在需要使用文件的時候才import 文件