協議不引用任何類型,它是無類的.任何類都可以遵守Drawing協議.
2,可以使用ConformsToProtocal:方法檢查一個對象是否遵守某項協議.
例如有一個名爲currentObject的對象,並且想要查看它時候是遵循Drawing協議.可以向他放鬆繪圖消息
id currentObjec;
if([currentObjec : ConformsToProtocal: @protoco (Drawing) : == YES]){
....//DO SOMETHING;
}
這裏使用一個專用的@protocol指令用於獲取一個協議名稱.併產生一個Protocol對象.
3,通常在類型名稱之後的<>中添加協議名稱,可以藉助編譯器來檢查變量的一致性.id <Drawing> currentObject;
這告訴編譯器currentObject將包含遵守Drawing協議的對象.如果這個對象遵循多個協議,可以用逗號隔開.
4, 定義一項協議的時候,可以擴展現有的協議.
@protocol Drawwing3D <Drawing>說明Drawwing3D協議也使用了Drawing協議.
最後分類也可以採用一項協議
@interface Fraction (Stuff) <NSCopy,NSCoding>
此處Fraction類擁有一個Stuff分類,這個分類採用了NSCopy,NSCoding兩個協議.
和類名稱一樣,協議名稱也是唯一的.