//
//? Man.h
//? 協(xié)議
//
//? Created by 郭寶 on 16/7/16.
//? Copyright ? 2016年 郭寶. All rights reserved.
//
#import <Foundation/Foundation.h>
// setp1.規(guī)定協(xié)議內(nèi)容
@protocol MakeLove <NSObject>
// 必需實(shí)現(xiàn)的方法
@required
// 買套
- (NSString *)buyCondoms:(NSString *)money;
// 可選擇實(shí)現(xiàn)的方法
- (void) giveMoney;
@end
@interface Man : NSObject
// 委托方的寫(xiě)法
// step2設(shè)定委托方(有需求的人)
@property (nonatomic, weak) id delegate;
// 查看微信時(shí)
- (void)seeWeChat;
@end
//
//? Man.m
//? 協(xié)議
//
//? Created by 郭寶 on 16/7/16.
//? Copyright ? 2016年 郭寶. All rights reserved.
//
#import "Man.h"
@implementation Man
- (void)seeWeChat {
// step3.讓代理人, 去執(zhí)行協(xié)議方法
// 代理人可能沒(méi)有實(shí)現(xiàn)協(xié)議方法
// 判斷: 判斷代理人存不存在 & 判斷代理人能否響應(yīng)對(duì)應(yīng)的協(xié)議方法, 滿足上述兩則條件, 則執(zhí)行
if (self.delegate != nil && [self.delegate respondsToSelector:@selector(buyCondoms:)]) {
NSString? *Condoms = [self.delegate buyCondoms:@"40元"];
NSLog(@"%@", Condoms);
}
}
@end
//
//? Woman.h
//? 協(xié)議
//
//? Created by 郭寶 on 16/7/16.//?
?Copyright ? 2016年 郭寶. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Man.h"
// step4.簽訂協(xié)議, 得到協(xié)議內(nèi)容
@interface Woman : NSObject <MakeLove>
@end
//
//? Woman.m
//? 協(xié)議
//
//? Created by 郭寶 on 16/7/16.
//? Copyright ? 2016年 郭寶. All rights reserved.
//
#import "Woman.h"
@implementation Woman
// step5.實(shí)現(xiàn)協(xié)議方法
- (NSString *)buyCondoms:(NSString *)money {
NSLog(@"%@", money);
// 花錢得到Condoms
return @"成功買到了durex";
}
@end
//
//? main.m
//? 協(xié)議
//
//? 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設(shè)計(jì)模式
// 舉例:一個(gè)man通過(guò)微信讓一個(gè)woman買一盒duress來(lái)MakeLove
// 通過(guò)打印結(jié)果可以看出成功將Woman的@"成功買到杜蕾斯"傳值給了Man.
Man *boyStudent = [[Man alloc] init];
Woman *girlStudent = [[Woman alloc] init];
// step6.設(shè)定代理人
boyStudent.delegate = girlStudent;
[boyStudent seeWeChat];
return 0;
}
