寫(xiě)協(xié)議的流程

//

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

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容