委托代理

转 原文http://www.jizhishusheng.com/?p=470

委托代理(degegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。委托机制在很多语言中都用到的。
在苹果开发过程中,用到委托的程序实现思想如下,我主要拿如何在视图之间传输信息做个例子。譬如:在两个页面(UIView视 图对象)实现传值,用委托(delegate)可以很好做到。
方法:
@interface A:UIView
id transparendValueDelegate;
@property(nomatic, retain) id transparendValueDelegate;
@end
@implemtion A
@synthesize transparendValueDelegate

-(void)Function

NSString* value = @"hello";
[transparendValueDelegate transparendValue: value];

//如果要得到回调的值

//比如可以这样得到B中返回的值

//NSString *string = [transparendValueDelegate transparendValue: value];
}
@end

类B
@interface B:UIView
NSString* value;


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

//NSString *demoString = @"demoString";

//return demoString;
}
@end

// 下面的设置A代理委托对象为B
//在定义A和B类对象处:
A* a = [[A alloc] init];
B* b = [[B alloc] init];
a. transparendValueDelegate = b;//设置A代理委托对象为B
这样 在视图A和B之间可以通过委托来传值了。

posted @ 2012-11-27 11:36  小乐"  阅读(242)  评论(0编辑  收藏  举报