IOS中委託代理(degegate)的理解和使用示例

     委託就是一個對象讓另外一個對象替他執行必定的動做,至於被委託對象是否是實現協議,和非正式協議,這個並不重要,說到底被委託對象實現協議和非正式協議的目的,就是讓被委託對象達到相似Java泛型,能夠匹配任意對象。

        委託代理(degegate),顧名思義,把某個對象要作的事情委託給別的對象去作。那麼別的對象就是這個對象的代理,代替它來打理要作的事。反映到程序中,首先要明確一個對象的委託方是哪一個對象,委託所作的內容是什麼。
       委託機制是一種設計模式,在不少語言中都用到的,這只是個通用的思想,網上會有不少關於這方面的介紹。那麼在蘋果開發過程當中,用到委託的程序實現思想以下,我主要拿如何在視圖之間傳輸信息作個例子。
譬如:在兩個頁面(UIIview視圖對象)實現傳值,用委託(delegate)能夠很好作到!
方法:
類A
@interface A:UIView
        id transparendValueDelegate;
       @property(nomatic, retain) id transparendValueDelegate;
@end

@implemtion A
@synthesize transparendValueDelegate
-(void)Function

      NSString* value = @"hello";
      //讓代理對象執行transparendValue動做
      [transparendValueDelegate transparendValue: value];
}
@end

類B
@interface B:UIView
      NSString* value;
@end

@implemtion B
-(void)transparendValue:(NSString*)fromValue
{
      value = fromValue;
      NSLog(@"the value is %@ ",value); 
}
@end

//下面的設置A代理委託對象爲B
//在定義A和B類對象處:

A* a = [[A alloc] init];
B* b = [[B alloc] init];
a. transparendValueDelegate = b;//設置對象a代理爲對象b

這樣在視圖A和B之間能夠經過委託來傳值!

下面這個例子委託有兩類:
一、一個視圖類對象的代理對象爲父視圖,子視圖用代理實現讓父視圖顯示別的子視圖
二、同一父視圖下的一個子視圖爲另外一個子視圖的代理對象,讓另外一個子視圖改變自身背景色爲給定的顏色
===============================================
規範格式以下:
@protocol TransparendValueDelegate;

@interface A:UIView
id< TransparendValueDelegate > m_dTransparendValueDelegate;
@property(nomatic, retain) id m_dTransparendValueDelegate;
@end
//代理協議的聲明
@protocol TransparendValueDelegat<NSObject> {       -(void)transparendValue:(NSString*)fromValue; }
相關文章
相關標籤/搜索