iOS 协议与委托

协议

1、协议里面定义了一组方法,本身不对方法进行实现,让使用了它的类来实现

2、在任何类中,只有声明了该协议,就可以实现里面的方法

代理(delegate)

代理就是委托别人办事,当一件事情触发时,自己不处理,交给别人处理。


接下里我们来举一个例子,在一个工作中有管理者与员工,管理者要让某个职工到时间后汇报自己的工作状况,

首先我们先建一个CompanyManager类,在里面定义CompanyManager类与工作协议,代码如下:

头文件:

#import <Foundation/Foundation.h>

@protocol WorkDelegate<NSObject>
@required//必须实现的
-(void)BeginWork;
-(void)Working:(NSString *)workcontent;
@optional//可以不实现
-(void)FinishWork;

@end


@interface CompanyManager : NSObject

@property(nonatomic,retain) id<WorkDelegate> delegate;

-(void)ReportWork;

@end


实现代码:

#import "CompanyManager.h"



@implementation CompanyManager

-(void)dealloc{
    [_delegate release];
    [super dealloc];
}
-(void)ReportWork{
    //当事件触发的时候,自己不处理,交给别人处理
    [_delegate BeginWork];
    
    [_delegate FinishWork];
    [_delegate Working:@"我正在做游戏开发"];
}

@end


然后,我们再来定义一个员工类,CompanyEmployee,要求在类中声明WorkDelegete协议,没有员工汇报自己的工作情况,实现代码如下:

头文件如下:

#import <Foundation/Foundation.h>
#import "CompanyManager.h"
@interface CompanyEmployee : NSObject<WorkDelegate>


@end
实现部分如下:

#import "CompanyEmployee.h"

@implementation CompanyEmployee

-(void)BeginWork{
    NSLog(@"我已经开始工作了,正在做开发");
};
-(void)Working:(NSString *)workcontent{
    NSLog(@"%@",workcontent);
}
-(void)FinishWork{
    NSLog(@"我的工作已经完成了,还有什么新的工作要做吗?");
};
@end



接下来,我们来模拟一下,老板让员工汇报工作的情况,代码如下:

CompanyManager *manager=[[[CompanyManager alloc] init] autorelease];
        
        CompanyEmployee *employee=[[[CompanyEmployee alloc] init] autorelease];
        manager.delegate=employee;
        
        [manager ReportWork];//时间到了,汇报工作
这样老板让汇报工作的时候,员工就汇报一下自己的工作了。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值