写协议的流程

作者: 不高冷的龙拾柒 | 来源:发表于2016-07-16 12:20 被阅读0次

    //

    //  Man.h

    //  协议

    //

    //  Created by 郭宝 on 16/7/16.

    //  Copyright © 2016年 郭宝. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    // setp1.规定协议内容

    @protocol MakeLove <NSObject>

    // 必需实现的方法

    @required

    // 买套

    - (NSString *)buyCondoms:(NSString *)money;

    // 可选择实现的方法

    - (void) giveMoney;

    @end

    @interface Man : NSObject

    // 委托方的写法

    // step2设定委托方(有需求的人)

    @property (nonatomic, weak) id delegate;

    // 查看微信时

    - (void)seeWeChat;

    @end

    //

    //  Man.m

    //  协议

    //

    //  Created by 郭宝 on 16/7/16.

    //  Copyright © 2016年 郭宝. All rights reserved.

    //

    #import "Man.h"

    @implementation Man

    - (void)seeWeChat {

    // step3.让代理人, 去执行协议方法

    // 代理人可能没有实现协议方法

    // 判断: 判断代理人存不存在 & 判断代理人能否响应对应的协议方法, 满足上述两则条件, 则执行

    if (self.delegate != nil && [self.delegate respondsToSelector:@selector(buyCondoms:)]) {

    NSString  *Condoms = [self.delegate buyCondoms:@"40元"];

    NSLog(@"%@", Condoms);

    }

    }

    @end

    //

    //  Woman.h

    //  协议

    //

    //  Created by 郭宝 on 16/7/16.// 

     Copyright © 2016年 郭宝. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    #import "Man.h"

    // step4.签订协议, 得到协议内容

    @interface Woman : NSObject <MakeLove>

    @end

    //

    //  Woman.m

    //  协议

    //

    //  Created by 郭宝 on 16/7/16.

    //  Copyright © 2016年 郭宝. All rights reserved.

    //

    #import "Woman.h"

    @implementation Woman

    // step5.实现协议方法

    - (NSString *)buyCondoms:(NSString *)money {

    NSLog(@"%@", money);

    // 花钱得到Condoms

    return @"成功买到了durex";

    }

    @end

    //

    //  main.m

    //  协议

    //

    //  Created by 郭宝 on 16/7/16.

    //  Copyright © 2016年 郭宝. All rights reserved.

    //#import <Foundation/Foundation.h>

    #import "Man.h"

    #import "Woman.h"

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

    // 代理delegate设计模式

    // 举例:一个man通过微信让一个woman买一盒duress来MakeLove

    // 通过打印结果可以看出成功将Woman的@"成功买到杜蕾斯"传值给了Man.

    Man *boyStudent = [[Man alloc] init];

    Woman *girlStudent = [[Woman alloc] init];

    // step6.设定代理人

    boyStudent.delegate = girlStudent;

    [boyStudent seeWeChat];

    return 0;

    }

    相关文章

      网友评论

        本文标题:写协议的流程

        本文链接:https://www.haomeiwen.com/subject/vipyjttx.html