協議的做用相似地C++中對抽象基類的多重繼承。相似於Java中的接口(interface)的概念。
協議是多個類共享方法的列表,協議中列出的方法在本類中並無相應實現,而是別的類來實現這些方法。ui
若是一個類要遵照一個協議,該類就必須實現特定協議的全部方法(可選方法除外).spa
定義一個協議須要使用@protocol指令,緊跟着的是協議名稱,而後就能夠聲明一些方法,在指令@end以前的全部方法的聲明都是協議的一部分。以下:
.net
若是你的類決定遵照NSCopying協議,則必須實現copyWithZone方法。經過在@interface中的一對尖括號內列出協議的名稱,告訴編譯你正在遵照一個協議,好比:
@interface Test:NSObject <NSCopying>
blog
實例:
Fly.h
繼承
FlyTest.h
接口
FlyTest.m
ip
test.m
get
程序運行結果以下:
string
go
stop
it
@protocol的標準語法是:
@protocol 協議名<其它協議, …>
方法聲明1
@optional
方法聲明2
@required
方法聲明3
…
@end
@optional代表該協議的類並不必定要實現方法。
@required是必需要實現的方法。