action outlet 委托delegate

    第一次接触到委托是在学习《大话设计模式》的时候碰到的,我是一名Javaer,那本书是.Net的,里面提到了委托这个概念,并且有相应的用法与支持,当时觉得挺奇怪,怎么Java中没有遇到过呢?后来才知道,Java没有明确的相应支持,感觉委托很像依赖,聚合,代理,事件监听,所以很长一段时间没有去真正的搞明白它,以为这些就是委托,今天学习到Objective-C中的委托的时候,才发现这些不是,仔细的研究再加上与Java相结合最后自己得出了委托的定义,虽然很像之前说的那些方式,但还是有一定的区别:

1)雇主与委托者共同参与一个处理,说白了就是调用雇主方法的时候在雇主的方法内不但有相应的逻辑处理,还得请求委托者的方法共同处理

2)请求委托者的方法时要将自己传递过去,也就是说把自己当作一个入参传递过去,当然也可以有不同的实现,只是委托者能获得雇主就可以

就这两点,一下子就区分了其它的概念,像却不是,但是Java中有一个技术确实是完全的委托的应用,就是事件监听,记不记得Swing的ActionListener,所以搞明白这个,委托是怎么回事也就清楚了,当然这里就不说了,自己思考,下面是我写的一个简单的委托在Objective-C中的小Demo,事先说明,一般情况下要运行反射才算是真正的一个委托,而不应该像我写的例子一样硬编码固定的类,我只是为了说明一下委托,而且,不怕大家见笑,我还不会Objective-C的动态反射,Java的委托例子网上多的是,我也就i不写Java的了,只是一起明白一下委托的概念及具体的应用的好了,代码如下:

#import <Cocoa/Cocoa.h>

 

 

/**

 *委托的Demo

 *

 *@author 王硕

 **/

 

//委托类,委托类没有任何方法声明,它只需实现非正规协议的中需要的方法

@interface DemoDelegate : NSObject 

 

@end //DemoDelegate

 

//雇主类

@interface Demo : NSObject {

//委托类

DemoDelegate *demoDelegate;

}

 

-(void) setDemoDelegate : (DemoDelegate *) delegate;

 

-(void) sendMessage;

 

@end //Demo

 

//NSObject的WSDelegate类别,定义非正规协议

@interface NSObject (WSDelegate) 

 

-(void) setDemoDelegate : (DemoDelegate *) delegate;

 

-(void) handlerDelegate : (Demo *) demo;

 

@end //WSDelegate

 

@implementation Demo 

 

-(void) setDemoDelegate : (DemoDelegate *) delegate {

[delegate retain];

[demoDelegate release];

demoDelegate = delegate;

}

 

//通知委托类方法执行

-(void) sendMessage {

[demoDelegate handlerDelegate : self];

}

 

-(void) dealloc {

[demoDelegate release];

[super dealloc];

}

 

@end //Demo

 

@implementation DemoDelegate 

 

//相应的委托方法

-(void) handlerDelegate : (Demo *) demo {

NSLog(@"%@", demo);

}

 

@end //DemoDelegate

 

int main (int argc, char *argv[]) {

 

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

Demo *demo = [[Demo alloc] init];

DemoDelegate *delegate = [[DemoDelegate alloc] init];

[demo setDemoDelegate : delegate];

[demo sendMessage];

[pool release];

 

return (0);

 

}

 

当然,上面的代码注释没有写的特别详细,因为相信如果你在学习Objective-C的委托,那么你一定掌握了Objective-C的基本知识,上面的代码是很简单的,你肯定可以看的懂,这些都是我综合资料之后总结的概念,如果哪里有不对的地方还希望和大家多交流,希望对大家有帮助.



Outlet与Action

在我们开始编程之前,需要记住以下两个单词。在以后我们会经常用到它们。

Outlet

通过outlet,我们可以从控件中取出信息,或者将新的信息赋予控件。按照词典上的解释outlet可以理解为插座的意思。界面上配置的每个控件,就像是通过“插座”与界面连接。这里,将程序设置在“插座”内,实现控件与界面间的信息交换。

Action

Action就是指程序中具体的行为,处理。应用程序将按照Action内实现的内容来处理。比如,「按下按钮后的处理」或者「输入文字后的处理」等等。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值