日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

IOS 委托和协议区别和联系 (-)

發(fā)布時(shí)間:2024/9/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 委托和协议区别和联系 (-) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

IOS 委托和協(xié)議區(qū)別和聯(lián)系 (-)





IOS上的協(xié)議類似于C#、Java上面的接口,他是從類中抽出來(lái)的一系列方法,但方法的實(shí)現(xiàn)是在實(shí)現(xiàn)這個(gè)協(xié)議的類中,任何實(shí)現(xiàn)這個(gè)協(xié)議的類都需要實(shí)現(xiàn)協(xié)議類中的@require方法;?

委托是一種設(shè)計(jì)模式,是一種設(shè)計(jì)思想。?

但是在IOS上面委托經(jīng)常依托協(xié)議來(lái)實(shí)現(xiàn)(但并不是必須的)。一個(gè)很好的例子就是老板和秘書(shū):老板要經(jīng)營(yíng)企業(yè)需要對(duì)新員工培訓(xùn)、對(duì)公司管理、打電話、發(fā)薪水等工作,但是對(duì)應(yīng)老板來(lái)說(shuō)一些事情例如打電話、發(fā)薪水的工作可以通過(guò)秘書(shū)來(lái)做,老板自己只負(fù)責(zé)對(duì)員工培訓(xùn)、公司管理,別的事情委托給秘書(shū)來(lái)做。委托思想就是在這種類似情況下產(chǎn)生的。?

再說(shuō)一下為什么IOS上面的委托經(jīng)常依賴協(xié)議來(lái)實(shí)現(xiàn)?就像老板需要一個(gè)會(huì)打電話、發(fā)薪水的秘書(shū)來(lái)減輕老板自己的工作,但是老板并不知道誰(shuí)有這兩項(xiàng)技能,那老板就會(huì)發(fā)一個(gè)招聘,招聘會(huì)這兩項(xiàng)技能的人。但老板怎樣知道應(yīng)聘人員會(huì)這兩項(xiàng)技能那,老板會(huì)通過(guò)你的學(xué)歷和工作經(jīng)驗(yàn)判斷應(yīng)聘人員是否會(huì)這兩項(xiàng)技能;但是對(duì)于程序來(lái)說(shuō),在不知道這個(gè)類的內(nèi)部情況下怎樣知道這個(gè)類是不是可以委托,評(píng)判標(biāo)準(zhǔn)是啥?這個(gè)時(shí)候如果一個(gè)類實(shí)現(xiàn)一個(gè)有這兩項(xiàng)技能的協(xié)議,則能很容易判斷出這個(gè)類具有這兩項(xiàng)技能。這個(gè)就是IOS上面為什么委托經(jīng)常和協(xié)議一塊用。?

例子待續(xù)...?

協(xié)議?

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #import <Foundation/Foundation.h> //協(xié)議是從類抽出的一些方法,如何實(shí)現(xiàn)這個(gè)協(xié)議的類都需要實(shí)現(xiàn)這里面的方法 @protocol SecProtocol <NSObject> @required //發(fā)工資 - ( void )payoff; //打電話 - ( void )tel; @optional @end

Boss?

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #import <Foundation/Foundation.h> #import "SecProtocol.h" //委托人 @interface Boss : NSObject @property (nonatomic, retain) id<SecProtocol> delegate; //管理 - ( void )manage; //教導(dǎo)新員工 - ( void )teach; //打電話 - ( void )tel; //發(fā)工資 - ( void )payoff; @end

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #import "Boss.h" @implementation Boss @synthesize delegate; - (id)init{ ???? self = [super init]; ???? if (self) { ????????? ???? } ???? return self; } - ( void )manage{ ???? NSLog(@ "boss manage" ); } - ( void )teach{ ???? NSLog(@ "boss teach" ); } - ( void )payoff{ ???? [self.delegate payoff]; } - ( void )tel{ ???? [self.delegate tel]; } @end

Sec?

?

1 2 3 4 5 6 #import <Foundation/Foundation.h> #import "SecProtocol.h" // 秘書(shū)類,實(shí)現(xiàn)協(xié)議, 委托對(duì)象 @interface Sec : NSObject<SecProtocol> @end

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #import "Sec.h" @implementation Sec - (id)init{ ???? self = [super init]; ???? if (self) { ????????? ???? } ???? return self; } - ( void )payoff{ ???? NSLog(@ "sec payoff!" ); } - ( void )tel{ ???? NSLog(@ "sec tel" ); } @end

調(diào)用方法?

?

1 2 3 4 5 6 7 8 9 Boss *boss = [[Boss alloc] init]; //委托人 ???? Sec *sec = [[Sec alloc] init]; //委托對(duì)象,實(shí)現(xiàn)了一定協(xié)議的對(duì)象 ???? boss.delegate = sec; //將委托對(duì)象復(fù)制給委托人里面的委托對(duì)象 ????? ???? [boss teach]; ???? [boss manage]; ????? ???? [boss tel]; ???? [boss payoff];


轉(zhuǎn)載于:https://my.oschina.net/fadoudou/blog/516171

總結(jié)

以上是生活随笔為你收集整理的IOS 委托和协议区别和联系 (-)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。