協(xié)議

main.m

#import <Foundation/Foundation.h>
#import "Girl.h"
#import "Boy.h"
int main(int argc, const char * argv[]) {
   
    Girl *zongru = [Girl girlWithName:@"zongru" gender:@"f"];
    Boy  *lol = [Boy boyWithName:@"luoluo" gender:@"m"];
    // 調(diào)用女孩類的_delegated的setter方法忠藤,將lol設(shè)置為女孩的代理
    [zongru setDelegated:lol];
    // 女孩餓了顷蟆。
    [zongru hungry];
    [zongru poor];
    return 0;
}

Boy.h

#import <Foundation/Foundation.h>
#import "Girl.h"
// 我們?cè)诟割惡笫褂眉饫ㄌ?hào)+協(xié)議名的方式表示:該類遵守某協(xié)議
@interface Boy : NSObject  <YueFa>
{
    NSString *_name;
    NSString *_gender;
}

// 掙錢
- (void)makeMoney;
// 做飯
- (void)cook;

// 洗衣服
- (void)washing;
- (NSString *)name;
+ (instancetype)boyWithName:(NSString *)name gender:(NSString *)gender;
@end

Boy.m

#import "Boy.h"

@implementation Boy
- (instancetype)initWithName:(NSString *)name gender:(NSString *)gender{
    if ([super init]) {
        _name = name;
        _gender = gender;
    }
    return self;
}


//  男孩實(shí)現(xiàn)女孩協(xié)議中的方法
// 掙錢
- (void)makeMoney{
    NSLog(@"%@,我掙了500億秘魯幣",_name);
}
// 做飯
- (void)cook{
    NSLog(@"%@衰絮,快來(lái)吃飯!",_name);
}

// 洗衣服
- (void)washing{
    NSLog(@"%@咆畏,我?guī)湍阆窗装?,_name);
}

- (NSString *)name{
    return _name;
}
+ (instancetype)boyWithName:(NSString *)name gender:(NSString *)gender{
    return [[Boy alloc] initWithName:name gender:gender];
}
@end

Girl.h

#import <Foundation/Foundation.h>
@protocol YueFa <NSObject>

@required   //  使用@required修飾的方法是必須實(shí)現(xiàn)的方法燃异,也是默認(rèn)的狀態(tài)
// 掙錢
- (void)makeMoney;
// 做飯
- (void)cook;
@optional   //  使用@optional修飾的方法,可以選擇性的實(shí)現(xiàn)
// 洗衣服
- (void)washing;

@end
@interface Girl : NSObject
{
    NSString *_name;
    NSString *_gender;
    //  聲明一個(gè)代理實(shí)例變量
    id <YueFa>_delegated;
    
    
}

// 給代理實(shí)例變量添加一個(gè)setter方法夯膀,就將那個(gè)宗儒的代理商:lol設(shè)置進(jìn)實(shí)例變量中
- (void)setDelegated:(id <YueFa>)delegated;
- (NSString *)name;
+ (instancetype)girlWithName:(NSString *)name gender:(NSString *)gender;
// 宗儒餓了
- (void)hungry;
// 宗儒窮了
- (void)poor;
@end

Girl.m


#import "Girl.h"

@implementation Girl
-(instancetype)initWithName:(NSString *)name gender:(NSString *)gender{
    if (self =[super init]) {
        _gender = gender;
        _name = name;
    }
    return self;
}
- (NSString *)name{
    return _name;
}
+ (instancetype)girlWithName:(NSString *)name gender:(NSString *)gender{
    return [[Girl alloc]initWithName:name gender:gender];
}
// 實(shí)現(xiàn)_delegated的setter方法
- (void)setDelegated:(id<YueFa>)delegated{
    _delegated = delegated;
}
// 宗儒餓了
- (void)hungry{
    NSLog(@"我餓了诗充!");
    // 女孩餓了,有代理去做飯
    [_delegated cook];
}

// 宗儒窮了
- (void)poor{
    NSLog(@"我窮了");
    [_delegated makeMoney];
}

@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诱建,一起剝皮案震驚了整個(gè)濱河市蝴蜓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俺猿,老刑警劉巖茎匠,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異押袍,居然都是意外死亡诵冒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門谊惭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汽馋,“玉大人否过,你說(shuō)我怎么就攤上這事〔洋” “怎么了苗桂?”我有些...
    開(kāi)封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)告组。 經(jīng)常有香客問(wèn)我煤伟,道長(zhǎng),這世上最難降的妖魔是什么木缝? 我笑而不...
    開(kāi)封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任便锨,我火速辦了婚禮,結(jié)果婚禮上我碟,老公的妹妹穿的比我還像新娘放案。我一直安慰自己,他們只是感情好矫俺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布吱殉。 她就那樣靜靜地躺著,像睡著了一般厘托。 火紅的嫁衣襯著肌膚如雪友雳。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天铅匹,我揣著相機(jī)與錄音押赊,去河邊找鬼。 笑死包斑,一個(gè)胖子當(dāng)著我的面吹牛流礁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罗丰,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼神帅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了丸卷?” 一聲冷哼從身側(cè)響起枕稀,我...
    開(kāi)封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谜嫉,沒(méi)想到半個(gè)月后萎坷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沐兰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年哆档,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片住闯。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓜浸,死狀恐怖澳淑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情插佛,我是刑警寧澤杠巡,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站雇寇,受9級(jí)特大地震影響氢拥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锨侯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一嫩海、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧囚痴,春花似錦叁怪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至成箫,卻和暖如春展箱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹬昌。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攀隔,地道東北人皂贩。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像昆汹,于是被迫代替她去往敵國(guó)和親明刷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容