Objective-c 協議(Protocol),objectivecprotocol

來源:互聯網
上載者:User

Objective-c 協議(Protocol),objectivecprotocol

  協議是多個類共用方法的列表,協議中列出的方法在本類中並沒有相應的實現,而是由別的類實現的這些方法。一個類要遵守一個協議,該類就必須實現特定協議的所有方法(可選方法除外)。協議是一系列方法的列表,任何類都可以聲明自身實現了某一個或一些協議。

  定義一個協議需要使用 @protocol 指令,緊跟著是協議的名稱,然後就可以聲明一些方法,在指令 @end 之前的所有方法的聲明都是協議的一部分。下面是在 NSObject.h 上所定義的 NSCopying 協議的代碼:

1    @protocol NSCopying2 3    - (id) copyWithZone:(NSZone *) zone;4 5    @end 

    如果你的類決定遵守 NSCopying 協議,則必須實現 copyWithZone:方法。通過在@interface 中的一對角括弧內列出協議的名稱,告訴編譯器你正在遵守一個協議,比如:@interface Test:NSObject <NSObject> 這句代碼的意思是:Test 類的父類是NSObject,並且遵守了 NSCopying 協議。

    如果想遵守多個協議,只需要在角括弧中列出多個協議,並可用“ ,”隔開。比如:@interface Test: NSObject <NSCopying , NSCoding> 。

    你也可以自己定義協議,比如:

    

1 @protocol Fly2 3 - (void)go;4 - (void)stop;5 @optional  // 可選的方法,可實現也可不實現6 - (void)sleep;7 8 @end

  下面就通過一個例子,來具體說明下協議的用法:

  

 1 #import <Foundation/Foundation.h> 2  3 @protocol Study 4  5 - (void)study; 6 - (void)stop; 7  8 @optional   // 可選的方法,此程式中選擇不實現 9 - (void)sleep;10 11 @end12 13 @interface Test : NSObject <Study>{14     15 }16 - (void)study;17 - (void)stop;18 @end19 20 @implementation Test21 22 - (void)study{23     NSLog(@"好好學習,天天向上!");24 }25 26 - (void)stop{27     NSLog(@"不學習,將很難成功!");28 }29 @end30 31 int main(int argc , const char *argv[]){32     @autoreleasepool {33         Test *test = [Test new];34         35         [test study];36         [test stop];37         38         if([test conformsToProtocol:@protocol(Study)] == YES)   // 判斷是否遵守了協議39             NSLog(@"遵守了Study協議!");40         else41             NSLog(@"沒有遵守協議!");42     }43     return 0;44 }

  同時,在建立一個新協議的時候,也可以在原有的協議上面擴充,如:@protocol Study1 <Study>。

  接下來說明一下協議定義的標準文法,其格式為:

  

    @optional 表明符合該協議的類並不一定要實現方法聲明中的各個方法,@required 是必須要實現的方法。協議類類似一個公用介面,它規定了多個類之間的介面。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.