Adopting a Protocol(採納協議)

翻譯自:Objective-C Runtime Programming Guide   chapter 4

採納協議和宣告超類某些地方有點像。它們都指派方法到類去,超類指派繼承的方法,協議指派宣告在協議列表中的方法。一個類被稱危採納一個正式協議是這樣的,如果在它的宣告中,它把協議列於超類名稱後面的角括號內的話。

@interface Classname : ItsSuperclass < protocol list >

類別採納協議的方式也是一樣:

@interface Classname (CategoryName) < protocol list >

一個類也可以採納一個以上的協議,協議名稱再斜一列表中被逗點分開:

@interface Classname : NSObject < Formatting, Pretifying >

一個類或是類別採納一個協議的話,必須要實作所有宣告在協議中的required方法,否則編譯器會提出警告。上面的Formatter類定義所有宣告在這兩個它所採納的協議中的requied方法,除了它自己已經宣告的以外。

採納協議的類或是類別必須導入宣告協議的表頭檔,宣告在被採納的協議裡面的方法不會被宣告在類或類別的interfaces裡面。

類也可能可以單純採納協議並且不宣告其他的方法,舉例來說,以下的類宣告採納FormattingPrettifying協議,但是沒有宣告它自己的實例變數或是方法:
@interface Formatter : NSObject < Formatting, Prettify >
@end

留言