协议:
协议是一个方法签名的列表,在其中可以定义若干个方法。根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法。
代理:
在B类中遵循协议:
在B类中实现协议中必须实现的方法:
设置代理人:
在A类中定义一个B类对象,调用协议中的方法,就可以实现类与类之间的传值了。
协议是一个方法签名的列表,在其中可以定义若干个方法。根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法。
代理:
代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表)。它更像是一种关系,我要做某一个事情,但我自己不想去做这件事,我委托其他人帮我去做这件事。这个时候,这位其他人就是我的代理。
protocol是一种语法,它提供了一个很方便的、实现delegate模式的机会。
在A类中定义protocol,如下:#import <UIKit/UIKit.h>
@protocol SECProtocol;
@interface BossView : UIView
@property(nonatomic,assign) id<SECProtocol> delegate;
//协议用assign,id<遵守协议的指针类型的对象> 变量名(也称为代理人)
@end
//为协议添加内容
@protocol SECProtocol <NSObject>
@protocol
@required //必须实现,默认项
-(void)playGame;
-(void)print;
@optional //非必须实现
-(void)cet4;
@end
在B类中遵循协议:
@interface RootViewController : UIViewController
<SECProtocol> //表示遵循协议(区别于实现协议,不要记混)
在B类中实现协议中必须实现的方法:
-(void)playGame{
NSLog(@"%s",__func__);
}
-(void)print{
NSLog(@"%s",__func__);
}
设置代理人:
BossView *Boss = [[BossView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)];
[Boss setBackgroundColor:[UIColor blueColor]];
Boss.delegate = self; //设置代理人
[self.view addSubview:Boss];
[Boss release];
[self sayHello];
在A类中定义一个B类对象,调用协议中的方法,就可以实现类与类之间的传值了。