一.代理实现

1.新建两个类PersonOne和PersonTwo,PersonOne有件事需要做,打算交给别人去做。那么PersonOne有一个协议:

@protocol SomeThing <NSObject>

-(NSString *)doSomeThing:(NSString *)str;

@end

PersonOne开始招人

@interface PersonOne : NSObject

@property (weak) id delegate;

@end

2.PersonTwo发现自己能做这件事,于是去应聘了。引入delegate类

#import <Foundation/Foundation.h>
#import "PersonOne.h"

@interface PersonTwo : NSObject<SomeThing>

@end

并且PersonTwo要会做这件事

#import "PersonTwo.h"

@implementation PersonTwo

- (NSString *)doSomeThing:(NSString *)str{
    return str;
}

@end

3. 实现委托人和被委托人关联

        PersonOne *pA = [[PersonOne alloc]init];
        PersonTwo *pB = [[PersonTwo alloc]init];
        pA.delegate = pB;

4.委托关系确定后,委托人去做这件事吧

if(pA.delegate && [pA.delegate respondsToSelector:@selector(doSomeThing:)]){
            [pA.delegate doSomeThing:@"hello world"];
}

5总结

代理这个设计模式主要用于传值,比如两个页面,a页面跳转到b页面,当b页面发生某些改变时需要通知页面a知道,那么就可以用代理来实现

posted on 2016-06-26 17:51  chengkaihua  阅读(139)  评论(0编辑  收藏  举报