Objective-C 入門(七)協議 protocol(JAVA中的接口)
接口的作用想必大家都比較瞭解 OV中的 protocol 相比接口作用相似 語法稍有不同
1.先來看聲明一個協議 在創建文件的時候選擇.protocol文件 :
@protocol SKAnimal
-(void)eat;
@optional
-(void)think;
@end;
@protocol 用來聲明這是一個協議 @optional 下邊的方法是可以選擇實現的, 還 可以通過 @required 屬性來聲明這個方法是必須實現的;
2.當一個類實現這個協議 只需要在 父類名之後加上"<協議名稱>"即符合了這個協議
@interface SKPerson:NSObject <SKAnimal> //---這裏就實現了這個協議;
3.你可以用 conformsToProtocol 方法來檢查 這個類是否遵循某項協議 :
id person
if([person conformsToProtocol:@protocol (SKAnimal)]==YES){
........
}
這裏注意寫法就可以了 這個方法參數需要一個protocol 對象 傳進來一個就可以了
4. 當然一個類可以遵循多個協議
@interface SKPerson:NSObject <SKAnimal,SKAndroid>
5. 如果父類遵循了某個協議 子類也就默認遵循了這個協議
6. 協議可以遵循另一個協議 如果JAVA中的接口繼承接口一樣 :
@protocol SKAnimal <SKAndroid>
7. Category 類也可以遵循某項協議:
@ interface SKPreson(自定義名字)<SKAnimal>
8. OC中還有一個定義:非正式協議
個人理解 這個非正式協議 就是 Category 的第二種寫法 只不過這個協議只符合這 一個類
9. RespondsToSelector 自省機制