自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Objective-C代理方案

移動開發(fā) iOS
本文實(shí)現(xiàn)AView中點(diǎn)擊切換到BView,BView中點(diǎn)擊又切換回AView中,并把Bview刪除或隱藏,這樣的一個實(shí)例,來看內(nèi)容。

Objective-C代理方案是本文要介紹的內(nèi)容。通過一個ViewController控制著AView和BView,這樣的一個實(shí)例來介紹內(nèi)容,我們先來看詳細(xì)內(nèi)容。

現(xiàn)在要實(shí)現(xiàn):AView中點(diǎn)擊切換到BView,BView中點(diǎn)擊又切換回AView中,并把Bview刪除或隱藏。

由于對模式不是很清楚,所以沒想到用什么模式處理,如果有什么好的模式可以解決上述問題,希望大俠們指教哇。

最后使用的方法是objective-c的代理。

1、在BView.h中定義一個代理:

  1. id delegate; // A delegate that wants to act on events in this view 

2、定義代理方法,這里使用到的是objective-c 的協(xié)議

  1. @interface NSObject ( BViewDelegate)   
  2. -(void)delegateMethod;  
  3. @end 

注:以上寫的協(xié)議為非正式的,所以,不用被設(shè)置代理者,不實(shí)現(xiàn)這個代理方法也是可以的。

3、在點(diǎn)擊中實(shí)現(xiàn)代碼中,調(diào)用代理者實(shí)現(xiàn)的代理方法。在BView.m中添加如何類似

代碼:

//設(shè)置了代理者,且代理者實(shí)現(xiàn)了

  1. delegateMethod  
  2. if(delegate && [delegate respondsToSelector:@selector(delegateMethod)])   
  3. delegate delegateMethod];  

4、在AViem.m中設(shè)置BView的代理,并實(shí)現(xiàn)delegateMethod方法即可:

類似初始化中添加:[aView setDelegate:self];

  1. -(void)delegateMethod{  
  2.       //control bView code here  
  3.       ...  

另外,關(guān)于正式協(xié)議:

  1. @protocol protocolName  
  2. @optional -(void)delegateMethodA  
  3. @required -(void)delegateMethodB  
  4. // other methods  
  5. ...  
  6. @end 

正式協(xié)議類似于java的借口或抽象類。@optional 的方法,可實(shí)現(xiàn)也可不實(shí)現(xiàn),但@required 的方法必需實(shí)現(xiàn)。默認(rèn)為@required。

正式協(xié)議要求在代理類中聲明采納此代理,如:

  1. @interface ClassName: NSObject <ProtocolName> 
  2. //...  
  3. @end 

另外,在調(diào)用特殊代理方法前,需要通過conformsToProtocol函數(shù)來判斷代理對

象是否遵守定義的協(xié)議,如:

  1. if([mydelegate conformsToProtocol:@protocol(protocolName)])  
  2. {   
  3.       [mydelegate delegateMethod];   

或者使用

  1. respondsToSelector:@selector 

來判斷代理對象是否實(shí)現(xiàn)相應(yīng)的方法。

小結(jié):淺談Objective-c代理方案的內(nèi)容介紹完了,希望本文對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-02 13:16:36

Objective-C 語法 函數(shù)

2011-08-04 11:15:46

Objective-C 構(gòu)造函數(shù) 構(gòu)造方法

2011-08-04 09:35:09

Objective-C 編碼規(guī)范

2011-08-03 15:51:48

Objective-C 協(xié)議 委托

2011-07-28 18:11:18

Objective-C Cocoa 編程

2011-08-10 18:07:29

Objective-C反射

2013-03-27 12:54:00

iOS開發(fā)Objective-C

2013-06-20 10:40:32

Objective-C實(shí)現(xiàn)截圖

2011-05-11 11:20:26

Objective-C

2011-05-11 15:58:34

Objective-C

2011-08-04 14:58:37

Objective-C Cocoa NSString

2011-05-11 13:54:08

Objective-C

2011-05-11 15:45:50

內(nèi)存管理Objective-C

2013-08-21 14:57:42

objective-c問題

2011-05-11 14:06:49

Objective-C

2014-04-30 10:16:04

Objective-CiOS語法

2011-07-08 13:49:46

Objective-C UUID

2011-07-29 16:16:30

Objective-c block

2011-08-17 10:58:59

Objective-C構(gòu)造函數(shù)

2014-06-25 14:02:59

Objective-CKVO
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號