ios資訊互動 協議的使用

來源:互聯網
上載者:User

標籤:

如果一個協議中定義了某些方法,而某類又實現了該協議,那麼該類必須實現這些方法。換句話說,協議是一組公用的方法聲明,誰實現協議,誰就負責實現這些方法,不然會有黃色警告。協議可以擴充已有協議。協議的關鍵字是protocol,以@protocol開始聲明,以@end結束。在類中實現協議時,只需要在類名後面加個<協議名>,即可。下面 看代碼:

先定義一個協議:eat.h

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @protocol eat <NSObject>//協議eat擴充了協議NSObject.h  
  4. -(void)eat;  
  5. @end  
上面擴充的NSObject協議不用實現,因為繼承於NSObject的類已經繼承了對NSObject協議的實現

 

下面建立一個類:Human.h

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2. #import "eat.h"  
  3. @interface Human : NSObject <eat>  
  4.   
  5. @end  
Human.m

 

 

[plain] view plaincopy 
  1. #import "Human.h"  
  2.   
  3. @implementation Human  
  4. -(void)eat  
  5. {  
  6.     NSLog(@"協議中定義的eat");  
  7. }  
  8. @end  
在main.m中調用:

 

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2. #import "eat.h"  
  3. #import "Human.h"  
  4. int main(int argc, const char * argv[])  
  5. {  
  6.   
  7.     @autoreleasepool {  
  8.         Human *human =[[Human alloc] init];  
  9.         [human eat];  
  10.           
  11.     }  
  12.     return 0;  
  13. }  


 

2012-03-18 14:35:29.099 category1[1752:403] 協議中定義的eat



很簡單吧,另外,在新版本的objective-c中,增加了協議的一些可選項,@optional,@required,協議中的方法必須實現,不然會報錯,但是如果以@optional修飾的話便沒有這種限制,預設必須實現的方法其實就相當於以@required修飾,比如上面的代碼,我們可以做出以下修改:

eat.h

 

[plain] view plaincopy 
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @protocol eat <NSObject>//協議eat擴充了協議NSObject.h  
  4. -(void)eat;  
  5. @optional  
  6. -(void)playGuitar;  
  7. @required  
  8. -(void)sleep;  
  9. @end  

這樣的話,sleep方法和eat方法同樣必須實現,而playGuitar方法便可選實現。

 

ios資訊互動 協議的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.