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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

2019獨角獸企業重金招聘Python工程師標準>>>

IOS 委托和協議區別和聯系 (-)





IOS上的協議類似于C#、Java上面的接口,他是從類中抽出來的一系列方法,但方法的實現是在實現這個協議的類中,任何實現這個協議的類都需要實現協議類中的@require方法;?

委托是一種設計模式,是一種設計思想。?

但是在IOS上面委托經常依托協議來實現(但并不是必須的)。一個很好的例子就是老板和秘書:老板要經營企業需要對新員工培訓、對公司管理、打電話、發薪水等工作,但是對應老板來說一些事情例如打電話、發薪水的工作可以通過秘書來做,老板自己只負責對員工培訓、公司管理,別的事情委托給秘書來做。委托思想就是在這種類似情況下產生的。?

再說一下為什么IOS上面的委托經常依賴協議來實現?就像老板需要一個會打電話、發薪水的秘書來減輕老板自己的工作,但是老板并不知道誰有這兩項技能,那老板就會發一個招聘,招聘會這兩項技能的人。但老板怎樣知道應聘人員會這兩項技能那,老板會通過你的學歷和工作經驗判斷應聘人員是否會這兩項技能;但是對于程序來說,在不知道這個類的內部情況下怎樣知道這個類是不是可以委托,評判標準是啥?這個時候如果一個類實現一個有這兩項技能的協議,則能很容易判斷出這個類具有這兩項技能。這個就是IOS上面為什么委托經常和協議一塊用。?

例子待續...?

協議?

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 #import <Foundation/Foundation.h> //協議是從類抽出的一些方法,如何實現這個協議的類都需要實現這里面的方法 @protocol SecProtocol <NSObject> @required //發工資 - ( 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; //教導新員工 - ( void )teach; //打電話 - ( void )tel; //發工資 - ( 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" // 秘書類,實現協議, 委托對象 @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

調用方法?

?

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


轉載于:https://my.oschina.net/fadoudou/blog/516171

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。