A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FFFF001 中级黑马   /  2016-7-5 23:10  /  1554 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FFFF001 于 2016-8-6 22:54 编辑

#if 0

iOS开发之 delegate 模式理解 (如有错误之处,望请指正...)

delegate

    1 * 模式理解
    2 * 解析
    3 * 模式实现

1. 模式理解
*   代理模式就是:[代理 调用协议的方法] ==> 间接达到某个家伙不想干或干不了的事情.
2. 解析
    *  这个模式最主要的就是分清"代理属性""代理对象"
        * 代理属性
            指有需求或有要求的一方.比如:     
                    经理通知程序员修改代码.    经理有要求..
                    工厂需要招代理商.         工厂有需求...
                    婴儿需要保姆照顾.         婴儿干不了...
            这个时候就可以将代理属性设为需求这一方.
            也就是就是在经理,工厂,婴儿类里写上 @property (nonatomic, strong) id <遵循的Protocol> delegate;
        * 代理对象
            指可以协助处理事物的对象.就是遵守协议的一方.他会将协议方法实现.这是他的能力.
            说白了就是某件事别人不想干,或干不了,他能处理,就让他干了这件事.
3.  模式实现
    *   经理检查代码,觉得代码不合理,通知程序员修改代码
/*-----------------------------协议--------------------------------*/
@protocol XiuGaiDaiMaProtocol <NSObject>

- (void)xiuGaiDaiMa;   // 需要找一个能修改代码的人

@end
/*-----------------------------经理--------------------------------*/
@interface Manager : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) id <XiuGaiDaiMaProtocol> delegate; // 经理需要个能修改代码的人

- (void)jianChaCode;  // 检查代码

@end

@implementation Manager

- (void)jianChaCode {
   
    NSLog(@"代码太烂,需要修改.."); // 检查代码发现太烂, 需要程序员修改
    [self.delegate xiuGaiDaiMa]; // 检查代码发现太烂, 需要程序员修改
}

@end

/*-----------------------------程序员--------------------------------*/
@interface Programmer : NSObject <XiuGaiDaiMaProtocol>

@property (nonatomic, copy) NSString *name;

@end

@implementation Programmer

- (void)xiuGaiDaiMa {           // 程序员的能力,修改代码
   
    NSLog(@"程序员修改代码");
}

@end
/*------------------------------实现-------------------------------*/
int main(int argc, const char * argv[]) {
   
   
    Manager *manager_Wang = [[Manager alloc] init];
    Programmer *programmer_Li = [[Programmer alloc] init];
   
    manager_Wang.delegate = programmer_Li;

    [manager_Wang jianChaCode];
}

2 个回复

倒序浏览
你该睡觉了
回复 使用道具 举报
虽然我看不懂,但是感觉好厉害的样子
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马