创建回调函数

1.新建一个空的project,在project中随便创建一个类,比方:
.h文件
#import <UIKit/UIKit.h>

typedef void(^resultBlock)(void);

@interface MyView : UIView

//回调函数的声明
@property (assign, nonatomic)resultBlock block;

//回调函数的实如今调用端实现
- (void)doSomething:(NSString *)string withTheBlock:(resultBlock)block;

@end

.m文件

#import "MyView.h"

@implementation MyView

- (void)doSomething:(NSString *)string withTheBlock:(resultBlock)block
{
    self.block = block;
    NSLog(@"string:%@",string);

    if (self.block) {
        self.block();
    }
}
@end

2.在ViewController中实现

- (void)viewDidLoad {
    [super viewDidLoad];

    MyView *view = [[MyView alloc]init];

    [view doSomething:@"Hello" withTheBlock:^{

        NSLog(@"这里是回调");
    }];

}

这样就实现了调用MyView对象的一个方法结束后。调用ViewController类中的方法。

时间: 2024-10-17 01:40:11

创建回调函数的相关文章

【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总

一.button回调 1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性. auto itemNor = Sprite::create("CloseNormal.png"); auto menuItem = MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this msg."); }); auto menu =

c# 如何调用非托管函数3-实现回调函数

部分dll函数是需要回调的,因此我们在托管代码中调用的时候,必须先创建回调函数,然后将该函数的指针作为参数传递给dll函数. 以下以EnumWindows函数为例,演示了使用回调函数的方法: 一 找到函数签名 EnumWindows具有以下签名: BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); 其中 lpEnumFunc 就是应用程序定义的回调函数的指针:BOOL CALLBACK EnumWindowsProc(HWND hwnd

Cocos2d-x 3.0 回调函数

一.按钮回调 1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性. [cpp] view plaincopy auto itemNor    =   Sprite::create("CloseNormal.png"); auto menuItem   =   MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this ms

CXF 入门:创建一个基于WS-Security标准的安全验证(CXF回调函数使用)

注意:以下客户端调用代码中获取服务端ws实例,都是通过CXF 入门: 远程接口调用方式实现 以下是服务端配置 ======================================================== 一,web.xml配置,具体不在详述 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.

Node.js:创建应用+回调函数(阻塞/非阻塞)

一.创建应用 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求根本不需要 PHP 来处理. 不过对 Node.js 来说,概念完全不一样了.使用 Node.js 时,我们不仅仅在实现一个应用,同时还实现了整个 HTTP 服务器.事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的. 在我们创建 Node.js

异步回调函数-创建进程的三种方式

回调函数 有两个类,A,B,在类A中调用B,在B中调用A的方法完成A的工作,那么这个在B类中调用的A的函数就称为回调函数. 异步回掉函数:类A将自己的工作交给类B后,继续执行剩下的程序,而B继续完成A交给的工作. 使用方法: 1.定义一个接口 2.A可以直接继承此接口,也可以定义一个内部类继承此接口: 定义一个方法,调用B中的方法 3.B中的方法调用A中的方法. //定义接口 public interface doJob { public void fillBlank(int a,int b,i

MFC 定时器 SetTimer 如何使用回调函数

创建工程名TestCallBack 自定义回调函数   定义为全局函数 在TestCallBackDlg.h文件开头定义 #pragma once void CALLBACK EXPORT TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime); 在TestCallBackDlg.cpp文件末尾实现函数 void CALLBACK EXPORT TimerProc(HWND hwnd,UINT message,UINT iTimerID

Python 3 进程池与回调函数

Python 3 进程池与回调函数 一.进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.多进程是实现并发的手段之一,需要注意的问题是: 很明显需要并发执行的任务通常要远大于核数 一个操作系统不可能无限开启进程,通常有几个核就开几个进程 进程开启过多,效率反而会下降(开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行) 例如当被操作对象数目不大时,可以直接利用multiprocessing中的Proces

JavaScript中的回调函数

在学习JavaScript的过程中遇到了很多,使用到回调函数的例子,出现了许多疑问,就由一个栗子开始吧: 在JavaScript中接触的第一个回调函数是在setInterval()和setTimeout()中出现的: 1 var num = 10; 2 3 var interValId = setInterval(function (){ 4 console.log(num); 5 num--; 6 if(num==0){ 7 clearInterval(interValId); 8 } 9 }