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之间可以通过委托来传值! 

下面这个例子委托有两类: 
1、一个视图类对象的代理对象为父视图,子视图用代理实现让父视图显示别的子视图 
2、同一父视图下的一个子视图为另一个子视图的代理对象,让另一个子视图改变自身背景色为给定的颜色 
=============================================== 
规范格式如下: 
@protocol TransparendValueDelegate; 

@interface A:UIView 
id< TransparendValueDelegate > m_dTransparendValueDelegate; 
@property(nomatic, retain) id m_dTransparendValueDelegate; 
@end 
//代理协议的声明 
@protocol TransparendValueDelegat<NSObject> 

      -(void)transparendValue:(NSString*)fromValue; 
}

转载于:https://www.cnblogs.com/mahaohao/p/6407198.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值