iOS开发学习42 委托和协议

一、概念

  • 协议 ,在iOS开发时用来定义一个虚拟的接口,只有接口定义,不包含实现。
  • 代理者:实现协议的某个方法。
  • 委托者:用自己的方法制定要实现协议的方法的对象。

二、使用

1. 创建protocol

@protocol关键字声明一个协议,协议包含两个对象:代理者、委托者。
protocol不是类,定义与类的定义有所不同。

myprotocol.h

@protocol myprotocol <NSObject>
@required
	-(void)callback:(int)parameter;
@end

在协议定义的callback,后面会用它来实现回调函数的功能。
协议的定义不需要 .m 文件。

2. 创建类B,运行回调函数

ClassB.h

@interface ClassB : NSObject{
    id<myprotocol>delegate;
}

@property (nonatomic, retain) id<myprotocol>delegate;
	-(void)test;
@end

ClassB.m

@implementation ClassB
@synthesize delegate;           //delegate将赋值为classA
-(void)test{
	[self.delegate callback];   //调用classA的callback回调函数
}
@end

3. 类A遵守协议,实现回调函数

ClassA.h

@interface ClassA : UITableViewController<myprotocol>
@end

ClassA.m

@implementation ClassA

///类A必须实现协议定义的callback
-(void)callback:(int)parameter{
	NSLog(@"callback ClassA");
}

-(void)ClassA{
	ClassB *classB = [[classB alloc] init];
	classB.delegate = self; //这一句是关键
	[classB test];          //调用classB的test,在test里回调ClassA的callback函数
}
@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程圈子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值