OC协议代理委托

FJBoss.h

#import <Foundation/Foundation.h>


//2.协议!

@protocol staffDelegate <NSObject>


- (void) canIOS;


@end


//1.委托类(制定协议的类)委托需要一个遵守协议的对象来帮他做事

@interface FJBoss : NSObject


//任何遵守协议的类创建的对象都可以作为老板的代理

//delegate一定要用weak修饰(防止循环引用造成对象不能销毁)

@property (nonatomic,weak) id <staffDelegate> delegate;


//老板告诉员工什么时候做事!

- (void) askStaffWorking;


@end


FJBoss.m


#import "FJBoss.h"

//老板实现告诉该做什么事情!

@implementation FJBoss


- (void)askStaffWorking{

    NSLog(@"员工们可以开始工作了!");

    [_delegate canIOS];

}


@end


FJPerson.h

#import <Foundation/Foundation.h>

#import "FJBoss.h"

@interface FJPerson : NSObject <staffDelegate>


@end


FJPerson.m

#import "FJPerson.h"


@implementation FJPerson


- (void)canIOS{

    NSLog(@"开始ios开发工作~");

}


@end

main.m


//协议就是一系列的条款和规定,要完成的功能(协议方法,只有声明没有方法)

//代理:遵守协议的类,实现协议方法

//委托:指定协议的类(将协议写在委托的.h文件中)


//使用协议代理解决问题:

//场景:老板想要做一个IOS项目

//分析:老板想做ios项目,但是自己不会做,找一个会做IOS开发的人来做




//重点:找到三要素:(委托,协议,代理)


//怎么找委托?就是自己想要完成某件事,但是自己不能或者不会做只能找别人做

//怎么确定协议?就是委托对代理的要求(这里就是会IOS开发)

//确定代理?遵守协议的对象(实现协议里的方法)。实际做事情的对象


//什么时候用协议代理委托;(如果一个对象想要做一件事情或者完成一个功能,

//但是自己做不到,需要一个可以做到的对象来帮他完成,这时候考虑使用协议代理)



#import <Foundation/Foundation.h>

#import "FJPerson.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        //1.创建一个委托类

        FJBoss *boss = [[FJBoss alloc] init];

        //2.创建一个代理类

        FJPerson *person = [[FJPerson alloc]init];

        //3.将人成为老板的员工(设置代理类)

        boss.delegate = person;

        //4.老板让员工工作

        [boss askStaffWorking];

        

    }

    return 0;

}


转载于:https://my.oschina.net/luhoney/blog/648727

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值