簡單的介紹
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這件事情了。