Cocoa設計模式之委託

2021-09-06 05:25:06 字數 1383 閱讀 2216

protocol-協議,就是使用了這個協議後就要按照這個協議來辦事,協議要求實現的方法就一定要實現。 

delegate-委託,顧名思義就是委託別人辦事,就是當一件事情發生後,自己不處理,讓別人來處理。

當乙個a view 裡面包含了b view,b view需要修改a view介面,那麼這個時候就需要用到委託了。

需要幾個步驟

1,首先定乙個協議

2,a view實現協議中的方法

3,b view設定乙個委託變數

4,把b view的委託變數設定成a view,意思就是 ,b view委託a view辦事情。

5,事件發生後,用委託變數呼叫a view中的協議方法

下面分步說明:

1,首先定義乙個協議

@protocol playerdetaildelegate -(void) updateplayer:(player *)player;

@end

這是一種正式定義協議的方法,還有一種叫做非正式協議,其實質就是category,對已有的類的方法進行擴充套件。

2、a view實現協議中的方法

首先是在標頭檔案中加入實現協議

@inte***ce playersviewcontroller : uitableviewcontroller

@property(nonatomic,strong) nsmutablearray *players;

@end

然後在實現檔案中實現協議中的方法

-(void) updateplayer:(player *)player

3,b view中設定乙個委託變數

@inte***ce

playerdetailviewcontroller : uiviewcontroller

@property(nonatomic,strong) iboutlet uitextview *detailview;

@property(nonatomic,strong) player *player;

@property(nonatomic,strong)

id_playerdelegate;

- (ibaction)buttonpressed:(id

)sender;

@end

在適當的地方呼叫該委託物件

- (ibaction)buttonpressed:(id

)sender

nslog(

@"執行!");

}

4,把b view的委託變數設定成a view,意思就是 ,b view委託a view辦事情。

5,事件發生後,用委託變數呼叫a view中的協議方法

Cocoa設計模式之通知

以前覺得通知比較難搞,總是避免。但是折騰一番後發現真的是個好東西,用起來很好。整理下使用方法。一 首先,在viewdidload或者其他地方新增通知 nsnotificationcenter defaultcenter addobserver self selector selector updat...

IOS設計模式之委託模式

委託模式從gof裝飾模式 decorator 介面卡模式 adapter 模板方法 template method 模式等演變而來,幾乎每乙個應用都會或多或少地用到委託模式,不只是cocoa touch框架,在cocoa中,委託模式也得到了廣泛的應用。include usingnamespace s...

php設計模式之委託模式

php設計模式之委託模式 使用委託模式目的是消除潛在的 難以控制的if else語句。原來的程式寫法 var playlist playlist new playlist playlist addsong home aaron music aa.brr playlist addsong home a...