写协议的流程

//

//  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;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容