html5画布funcition,回调(自定义实现)

标签:

对象A让对象B去做事情,当对象B做完事情后,需要告知对象A完成了制定的事情。这就是回调的一种使用方法

软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户方的接口)。回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础。

在这个Demo中,在类B中实例类A,类A调用自己的方法Method1,但是Method1种调用的Method2却在类B中实现。这样就称作回调。。。。。。

在ios开发过程中,经常会遇到B类调用A类的某一个方法,调用完A类方法之后,再执行B类中的其他方法的操作。

通常的做法有两种:

1、通过Delegete来实现;

2、通过通知NSNotificaitionCenter的方式实现;

由于这两种方式比较常见所以就不在解释其使用方法了,这里重点说一下自定义的方式(由方式1简化而来的):

自定义方式实现回调  具体代码:

1、创建一个工程名CallBackDemo,在ViewController.xib文件加入一个button按钮,ViewController.h代码:

1: #import

2:

3: @interface ViewController : UIViewController{

4: IBOutlet UIButton *clickButton;

5: }

6:

7: - (IBAction)onClickButtonTouchUpInside:(id)sender;

8:

9: @end

上述第7行代码,便是点击button触发的事件操作。

2、ViewController.m代码:

1: //

2: // ViewController.m

3: // CallBackDemo

4: //

5: // Created by jordy on 11-10-28.

6: // Copyright (c) 2011年 __MyCompanyName__. All rights reserved.

7: //

8:

9: #import "ViewController.h"

10: #import "EventObject.h"

11:

12: @implementation ViewController

13:

14:

15: - (void)viewDidLoad

16: {

17: [super viewDidLoad];

18: }

19:

20: - (IBAction)onClickButtonTouchUpInside:(id)sender

21: {

22: NSLog(@"onClickbutton...");

23: EventObject *eventObject = [[[EventObject alloc] init] autorelease];

24: [eventObject setDelegateObject:self setBackFunctionName:@"handleBackFunction"];

25: [eventObject handleEventObject];

26: }

27:

28: - (void)handleBackFunction

29: {

30: NSLog(@"执行完eventObject函数之后的具体的操作。。。。");

31: }

32:

33: - (void)viewDidUnload

34: {

35: [super viewDidUnload];

36: }

37:

38: @end

此类使用到了EventObject类,下面看一下EventObject类的代码。

3、EventObject.h代码:

1: @interface EventObject : NSObject {

2: id callbackObject;//回调类

3: NSString *callbackFunction; //回调的函数名

4: }

5:

6: - (void)handleEventObject;

7:

8: - (void)setDelegateObject:(id)cbobject setBackFunctionName:(NSString *)selectorName;

EventObject.m代码:

1: #import "EventObject.h"

2:

3: @implementation EventObject

4:

5: - (void)handleEventObject

6: {

7: NSLog(@"执行本类的操作");

8:

9: //执行回调操作

10: SEL func_selector = NSSelectorFromString(callbackFunction);

11: if ([callbackObject respondsToSelector:func_selector]) {

12: NSLog(@"回调成功...");

13: [callbackObject performSelector:func_selector];

14: }else{

15: NSLog(@"回调失败...");

16: }

17:

18: }

19:

20: //赋值回调

21: - (void)setDelegateObject:(id)cbobject setBackFunctionName:(NSString *)selectorName

22: {

23: callbackObject = cbobject;

24: callbackFunction = selectorName;

25: }

26:

27: - (void)dealloc

28: {

29: [super dealloc];

30: }

标签:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值