做程序时,经常会碰到这样一种情况:在对象A中有一个对象B,在B中做某个操作时需要调用A对象的某个方法。这时,我们就需要用代理机制,也叫委托机制。
还记得刚接触面向对象的时候,居然在B对象中又alloc了一个A对象,发现执行方法时没有works,那时不理解新alloc的对象和原来的对象A不是一个东东。
今天专门补习了一下哈,在网上找了一些资料,综合了一下,写了这篇菜鸟教程。
委托代理(delegate),顾名思义,把某个对象要做的事情委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理要做的事。反映到程序中, 首先要明确一个对象的委托方是哪个对象,委托所做的内容是什么。委托机制在很多语言中都用到的,这只是个通用的思想,网上会有很多关于这方面的介绍。
下面以一个简单的例子介绍一下委托:
一、新建iPhone项目DelegateDemo;
二、添加UIView类ViewA;
三、ViewA.h的内容如下:
#import <UIKit/UIKit.h>
@protocol ViewADelegate; //申明代理协议
@interface ViewA : UIView {
id <ViewADelegate> _viewADelegate;
}
@property (nonatomic, assign) id viewADelegate; //定义代理的属性,同时要在.m加中
@end
//代理协议的内容
@protocol ViewADelegate <NSObject>
- (void)viewACallBack;
@end
View.m中:
@synthesize viewADelegate = _viewADelegate;
三、在DelegateDemoViewController.m中:
- (void)viewDidLoad {
ViewA *viewA = [[ViewA alloc] initWithFrame:CGRectMake(50, 100, 200, 100)];
viewA.viewADelegate = self; //设置viewA的代理为当前对象自己
[self.view addSubview:viewA];
[viewA release];
[super viewDidLoad];
}
- (void)viewACallBack {
NSLog(@"Hi, I am back!");
}
四、点击此处下载示例。
分享到:
相关推荐
最近收集的VB.Net-C#多线程Thread-代理委托delegate编程。文章列表: c#.net多线程同步.txt C#WebBrowser页面与WinForm交互技巧一.txt C#多线程编程-多细全.txt C#多线程编程简单实例.txt C#多线程窗体控件安全访问....
从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的。首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个...
CSharp_Delegate C#委托 本人博客中的示例代码
本例子演示了iPhone开发中最常用到的两个类之间互相通信的方法之一:delegate
本文实例讲述了C#使用委托(delegate)实现在两个form之间传递数据的方法。分享给大家供大家参考。具体分析如下: 关于Delegate【代理、委托】是C#中一个非常重要的概念,向前可以推演到C++的指针,向后可以延续到匿名...
委托的简单理解: 参考了一些资料整合起来 写了个小程序,使您能充分理解和使用————delegate ,委托
qt delegate代理的使用demo
网上有很多关于C++ delegate机制的文章,但都讲的是函数指针的内容,上周就C++中实现C#的delegate机制的问题研究了好几天,查看了很多相关资料,才解决了问题,现将我写的C++ delegate测试程序贴出来,希望能帮到有...
delegate和block的使用
Delegate '委托,带参数的方法,多线程,可以轻松在线程中传递参数,获取返回值.
网上也有很多Delegate的Demo,比较乱,感觉不容易看懂。本来一个很简单的问题,大家搞得这么复杂。这个Demo就通俗易懂、简单、实用
委托delegate invoke的简单源代码,适合委托初学者!
委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就...
本ppt结合场景和实例对C#委托(delegate)的基础进行了讲解:包括了委托的定义,基本语法,同步异步调用,匿名委托的使用,泛型委托,lamda表达式,剖析了委托协变、委托逆变。对委托在.net 3.5框架中的身影进行了分析...
C#中的事件和委托(Delegate,Event)
轻量级 SOCKS 代理转 HTTP代理软件,在命令行中一行命令搞定
swift delegate 协议 代理 传值 方便好用
C# 通过代理实现冒泡排序,只适用于初学者,谢谢
delegate与block的使用
使用.Net 的委托机制来为我们的程序提供异步操作行为. 1步, 为我们的AsyncTest(Hello方法) 声明一个委托 public delegate string AsyncEventHandler(string name); 2步,使用委托提供的BeginInvoke, EndInvoke 方法...