Objective-C 協議 簡介 +委托的實現


簡單的介紹

1.1定義協議:

創建一個.h文件

  1: _MyProtocolName.h
  2: @protocol MyProtocolName <NSObject>
 
        
  3: @end 

注:協議中沒有變量;

<NSObject>是代表在此聲明的協議是NSObject協議的衍生協議(不是NSObject類);

1.2使用協議:

  1: @interface CustomView:UIView<MyProtocolName> 

代表CustomView遵循我們制定的這個協議,需要實現協議的方法

1.3用協議修飾變量:

如果這樣定義一個變量:

  1:   id<MyProtocolName>myNewVariable;

那么myNewVaiable是遵循我們制定的這個MyProtocolName協議的

 

如果定義函數時:

  1: - (void) doSomethingWithThisObject: (id<MyProtocolName>) aObject

那么這個函數的參數是需要遵循我們制定的這個MyProtocolName協議的

 

============接下來看下如何利用協議實現委托=========

目的:將A的事情委托給B來做
 步驟1.在A中聲明協議,即要委托出去的事情(方法)。
 步驟2.A中聲明一個委托對象,即要委托給誰去辦,用id<協議名字>委托對象名;
 步驟3.比如想讓B做A的事情,那么B的interface中要宣布自己遵循A中制定的那個協議。
 步驟4.A調用委托執行那件事情去.即[delegate fun]

A.h------------------------------------------------

@protocol Mydelegate//協議的聲明

-(void)Fun;

@end

 

@interface A:NSObject

{

   id<Mydelegate> delegate;//聲明一個委托對象,我們要把事情委托給實現Mydelegate協議的類

}

@property(assign,nonatomic) id<Mydelegate> delegate;

@end

A.m---------------------------------------------

@implementation

-(void)init

{

    delegate = B;

}

-(void)FunToOther

{

    [delegate Fun];//將消息發送給委托去處理

}

@end

 

委托對象的實現

B.h---------------------------------------------

#import"A.h"

@interface B:NSObject<MyDelegate>

@end

B.m---------------------------------------------

@implementation

-(void)fun

{

    //實現Mydelegate中制定的方法

}

@end

這樣的話A就可以委托B去做fun這件事情了。



Wangkeke 2012-05-05 10:57 發表評論


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM