Objective-C( protocol協議)

來源:互聯網
上載者:User

標籤:

protocol 協議

protocol:用來聲明方法

 

1.協議的定義

 @protocol 協議名稱 <NSObject>

  // 方法聲明列表....

 @end

 

 

 2.如何遵守協議

 1> 類遵守協議

 @interface 類名 : 父類名 <協議名稱1, 協議名稱2>

 

 @end

 

 2> 協議遵守協議

 @protocol 協議名稱 <其他協議名稱1, 其他協議名稱2>

 

 @end

 

 3.協議中方法聲明的關鍵字

 1> @required (預設)

   要求實現,如果沒有實現,會發出警告

 

 2> @optional

   不要求實現,怎樣不會有警告

 

 4.定義一個變數的時候,限制這個變數儲存的對象遵守某個協議

 類名<協議名稱> *變數名;

 id<協議名稱> 變數名;

 NSObject<MyProtocol> *obj;

 id<MyProtocol> obj2;

 

 如果沒有遵守對應的協議,編譯器會警告

 

 [email protected]中聲明的屬性也可用做一個遵守協議的限制

 @property (nonatomic, strong) 類名<協議名稱> *屬性名稱;

 @property (nonatomic, strong) id<協議名稱> 屬性名稱;

 @property (nonatomic, strong) Dog<MyProtocol> *dog;

 @property (nonatomic, strong) id<MyProtocol> dog2;

 

 6.協議可用定義在單獨.h檔案中,也可用定義在某個類中

 1> 如果這個協議只用在某個類中,應該把協議定義在該類中

 

 2> 如果這個協議用在很多類中,就應該定義在單獨檔案中

 

 7.分類可用定義在單獨.h和.m檔案中,也可用定義在原來類中

 1> 一般情況下,都是定義在單獨檔案

 2> 定義在原來類中的分類,只要求能看懂文法

#import <Foundation/Foundation.h>@protocol MyProtocol <NSObject> // 遵守其他協議,就把其他協議名寫在間括弧< >內 // 預設需要實現 - (void)test; // 聲明方法 // required 需要實現, 不實現只會發出警告 // optional 不需要實現@required- (void)test1;- (void)test2;@optional- (void)test3;@end/******以上是MyProtocol.h檔案*******/ #import <Foundation/Foundation.h>
@protocol MyProtocol; // 可以同時有多個協議 <MtProtocol, MyProtocol2>@interface Person : NSObject <MyProtocol>@property (nonatomic, strong) id<MyProtocol> obj;@end/******以上是Person.h檔案*******/ #import <Foundation/Foundation.h>#import "MyProtocol.h"@inplementation Person- (void)test{}- (void)test1{}- (void)test2{}@end
/******以上是Person.m檔案***********/

#import <Foundation/Foundation.h>
#import "MtProtocol.h"
#import "Person.h"
int main()
{

  Person *p = [[Person alloc] init];
  

  return 0;
}

 

基協議:<NSObject>  預設遵守基協議

 

Objective-C( protocol協議)

相關文章

聯繫我們

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