Objective-C中的协议(procotol,delegate)

简单来说,协议就是类的指针,是多态的实现。

我们说的某个类遵循(conformsto)什么协议(procotol),是指该类实现了指定协议的必选方法。

 

对于协议的理解,请看代码:

1.     //定义协议

2.     // custom protocol  

3.     @protocol CustomDelegate  

4.     -(void)ShowMessage:(NSString*)msg;  

5.     @end  

6.      

7.     //定义类使用协议

8.     //A.h  

9.     @interface A:NSObject{  

10.  id <CustomDelegate> m_pDelegate;

11.  //这里定义一个成员,它是一个协议,可以指向任何实现了CustomDelegate 里面

12.  //必选方法(required)的类的实例

13.  }  

14.  @property(nonamatic,assign) id <CustomDelegate> m_pDelegate;  

15.  @end  

16.   

17.  //A.m  

18.  @implementation A  

19.  @synthesize m_pDelegate;  

20.    

21.    

22.  //use protocol function;  

23.  -(void)UseProtocolFunc{  

24.  [m_pDelegate ShowMessage:@"hello world"];  

25.  // m_pDelegate已经是B一个实例(假设为tagB)的指针,可以调用tagB的方法

26.  }  

27.  @end  

28.  //B.h  

29.  @interface B:NSObject <CustomDelegate>{  

30.  }  

31.  @end  

 

 

 

 

32.  //B.m  

33.  @implementation B  

34.  -(id)init{  

35.  A* a = [[A alloc]init];  

36.  a. m_pDelegate = self;  

37.  //这里,因为self是类B的实例,而B遵循CustomDelegate

38.  //(实现了ShowMessage方法)协议,所以编译通过.

39.  [a UseProtocolFunc];  

40.  //让 a 通过协议调用B中的方法

41.  }  

42.  -(void)ShowMessage:(NSString*)msg{  

43.  NSLog(msg);  

44.  }  

45.  @end  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值