iOS中delegate(委託)的使用

2021-06-20 06:31:01 字數 2386 閱讀 5620

委託

委託,就是委託他人幫自己去做什麼事。也就是當自己做什麼事情不方便的時候,就可以建立乙個委託,這樣就可以委託他人幫自己去實現什麼方法。

舉例:這個週末放假有空,我想買個手機,所以我有個buyiphone 方法,但是我不知道誰能買手機,所以把這個需求發布出去(比如公布在**上),如果有賣手機的商人(也就是說他能實現buyiphone這個方法)看到,他就會接受我的委託,(在商人自己的類中實現),那麼我的委託物件就指向了這個商人..當我要買手機的時候,直接找他就行了.

例如:在me.h中

@protocol buydelegate------買手機協議

-(void)buyiphone:(nsstring *)iphonetype money:(nsstring *)money;

@end

@inte***ce me : nsobject----我

@property(assign,nonatomic)iddelegate;

@end

**中宣告了乙個協議 名叫buydelegate,在其中有乙個buyiphone方法,即乙個委託項。當我要購買手機的時候只需要通過delegate 呼叫 buyiphone方法即可.如下:在me.m中

-(void)willbuy--------我要叫委託人幫我買手機

例如:商人類實現了這一委託(用表示實現),在business.h中

#import #import"my.h"

@inte***ce business : nsobject@end

然後在business.m中呼叫 buyiphone方法

#import"business.h"

@implementation business

-(void)buyiphone:(nsstring *)iphonetype money:(nsstring *)money

@end

接下來,應該如何把我和委託人聯絡起來呢?

me *ken; // 我

business *js; // **商

} @end

最後,我想分享一下在使用委託的時候的一些心得和注意事項。

心得:delegate的命名要準確,盡量看名字就知道用法。delegate和通知有的用法有些象,但是前者是單對單的,後者是單對多的情況。

注意:在dealloc要把delegate至為nil,還有就是delegate設定屬性的時候要用assign,不要用retain。

通常,乙個delegate的使用過程,需要經過五步:

1.     建立乙個 delegate;

2.    委託者宣告乙個delegate;

3.    委託者呼叫delegate內的方法(method);

4.    被委託者設定delegate,以便被委託者呼叫;

5.    被委託者實現delegate 所定義的方法。

寫了乙個簡單的委託的試用測試:

首先建立functiontest類,宣告委託:

functiontest.h

@protocol functiontestdelegate - (void)func3;

- (void)func4;

@end

@inte***ce functiontest : nsobject

@property (nonatomic, assign)iddelegate;

- (void)func1;

- (void)func2;

@end

在functiontest.m中:

@implementation functiontest

@synthesize delegate;

- (void)func1

- (void)func2

@end

#import #import "functiontest.h"  

@class viewcontroller;

functiontest *test;

}

@property (strong, nonatomic) uiwindow *window;

@property (strong, nonatomic) viewcontroller *viewcontroller;

@end

- (void)func3  

- (void)func4

ios中關於delegate(委託)

ios中關於delegate 委託 的使用心得 直覺 從開始從事oc工作到現在大概1年多了,從當初接觸oc的 協議 的不明白,到現在 中隨處可見的委託,協議,其中感悟頗多。首先,大家應該都明白的是委託是協議的一種,顧名思義,就是委託他人幫自己去做什麼事。也就是當自己做什麼事情不方便的時候,就可以建立...

ios 設定委託delegate

為了進行頁面傳值,也可以用委託的方法。下面以時間控制項為例。1.首先,在.h 檔案設定委託 import protocol datepickerviewdelegate class datepickerview inte ce datepickerview uiview property stron...

iOS開發基礎 delegate 委託

設計模式,是ios中一種訊息傳遞的方式,由 物件 委託者 協議組成。宣告協議 nextviewcontroller.h import ns assume nonnull begin 宣告協議 protocol nextviewcontrollerdelegate 協議中必須完成的方法 void se...