簡(jiǎn)單的介紹
1.1定義協(xié)議:
創(chuàng)建一個(gè).h文件
1: _MyProtocolName.h
2: @protocol MyProtocolName <NSObject>
3: @end
注:協(xié)議中沒有變量;
<NSObject>是代表在此聲明的協(xié)議是NSObject協(xié)議的衍生協(xié)議(不是NSObject類);
1.2使用協(xié)議:
1: @interface CustomView:UIView<MyProtocolName>
代表CustomView遵循我們制定的這個(gè)協(xié)議,需要實(shí)現(xiàn)協(xié)議的方法
1.3用協(xié)議修飾變量:
如果這樣定義一個(gè)變量:
1: id<MyProtocolName>myNewVariable;
那么myNewVaiable是遵循我們制定的這個(gè)MyProtocolName協(xié)議的
如果定義函數(shù)時(shí):
1: - (void) doSomethingWithThisObject: (id<MyProtocolName>) aObject
那么這個(gè)函數(shù)的參數(shù)是需要遵循我們制定的這個(gè)MyProtocolName協(xié)議的
============接下來看下如何利用協(xié)議實(shí)現(xiàn)委托=========
目的:將A的事情委托給B來做
步驟1.在A中聲明協(xié)議,即要委托出去的事情(方法)。
步驟2.A中聲明一個(gè)委托對(duì)象,即要委托給誰去辦,用id<協(xié)議名字>委托對(duì)象名;
步驟3.比如想讓B做A的事情,那么B的interface中要宣布自己遵循A中制定的那個(gè)協(xié)議。
步驟4.A調(diào)用委托執(zhí)行那件事情去.即[delegate fun]
A.h------------------------------------------------
@protocol Mydelegate//協(xié)議的聲明
-(void)Fun;
@end
@interface A:NSObject
{
id<Mydelegate> delegate;//聲明一個(gè)委托對(duì)象,我們要把事情委托給實(shí)現(xiàn)Mydelegate協(xié)議的類
}
@property(assign,nonatomic) id<Mydelegate> delegate;
@end
A.m---------------------------------------------
@implementation
-(void)init
{
delegate = B;
}
-(void)FunToOther
{
[delegate Fun];//將消息發(fā)送給委托去處理
}
@end
委托對(duì)象的實(shí)現(xiàn)
B.h---------------------------------------------
#import"A.h"
@interface B:NSObject<MyDelegate>
@end
B.m---------------------------------------------
@implementation
-(void)fun
{
//實(shí)現(xiàn)Mydelegate中制定的方法
}
@end
這樣的話A就可以委托B去做fun這件事情了。