iOS Developer

写协议的流程

2016-07-16  本文已影响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;

}

上一篇下一篇

猜你喜欢

热点阅读