一.什麼是協議(protocol)?
1. 協議是多個對象之間協商的一個接口對象。
2. 協議提供一系列方法用來在協議的實現者和代理者之間的一種通訊方式
3. 協議能夠用來聲明一大堆方法(不能申明成員變量)
4. 只要某個類遵照了這個協議,就至關於擁有了這個協議中的全部方法申明
5. 只要父類遵照了某個協議,就至關於子類也遵照了。
6. 類遵照協議 ,協議遵照協議
二.protocol的格式
語法:
@protocol 協議名稱 <NSObject> //協議須要繼承基協議
//方法的聲明列表
@end
三.常識:
1.協議中有兩個關鍵字能夠控制方法是否要實現 ,用途在於程序員之間的交流 :
語法:
@required://這個方法必需要實現(默認)
@optional://不必定要實現
2.某個類遵照協議
語法:
@interface 類名 : 父類<協議名稱>程序員
@end
3.一個類能夠遵照多個協議
語法:
//, 類同時遵照多份協議
@interface 類名: 父類 <協議名1,協議名2 > //Person類同時遵照多個協議用逗號[,]隔開
4.協議遵照其餘協議 ,至關於擁有了其餘協議中的方法聲明:
語法:
//, 協議遵照其餘協議
@protocol 協議名<其餘協議名1,其餘協議名2 >
5.protocol的基協議
• NSObject是一個基類,最根本最基本的類,任何其餘類最終都要繼承它
• NSObject是一個協議,最根本最基本的協議,任何協議最終都要繼承它
• NSObject協議中聲明不少最基本的方法,好比description、retain、release等
• 建議每一個新協議都遵照NSObject協議
• 讓對象遵照協議便可限制對象類: 語法:
//限制對象必須遵照某個協議寫法
對象名<協議名> *obj3 = [[對象名 alloc] init];
6.protocol的提早聲明
• 關鍵字@protocol 與@class 原理同樣(系統調優),僅僅只是引入協議,在須要使用的協議的類使用@import導入 :
//告訴類 MyProtocol是一個協議
@protocol MyProtocol;
7.protocol的判判定義
respondsToSelector:@selector,這個方法的做用是判斷當前對象中是否認義了一個方法,這個方法仍是頗有用的。ui