ios之协议传值(Protocol)

来源:互联网 发布:2017年6月进出口数据 编辑:程序博客网 时间:2024/06/06 00:58
协议:

协议是一个方法签名的列表,在其中可以定义若干个方法。根据配置,遵守该协议的类会去实现这个协议中规定的若干个方法。

代理:

代理是一个概念,很难用一个名词去定义(如我们可以说协议其实就是一个方法列表)。它更像是一种关系,我要做某一个事情,但我自己不想去做这件事,我委托其他人帮我去做这件事。这个时候,这位其他人就是我的代理。

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类对象,调用协议中的方法,就可以实现类与类之间的传值了。

0 0
原创粉丝点击