08-block

1. 简介

* Block封装了一段代码,可以在任何时候执行

* Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值

2. 使用

1> 定义一个无返回值且没有形参的block

void (^myBlock)() = ^(){ // 由于这里没有形参,也可以省略后面的 ()
    // ...
};

// 利用block变量调用block内部的代码
myBlock();

2> 定义一个有返回值、有形参的block

int (^sumBlock)(int, int) = ^(int a,int b) {
    return a+b;
};

// 调用该block
sumBlock(3, 5);

3. 注意

* block内部可以访问外面的变量

* 默认情况下,block内部不能修改外面的局部变量

* 给局部变量加上 __block关键字,这个局部变量就可以在block内部修改

int a = 10;
__block int b = 20;

void (^block)();

block = ^{
    a = 30; // error 可访问,当不可修改
    b = 35;
};

block();

4. 利用typedef定义block类型

typedef int (^MyBlock)(int, int);

// 以后就可以利用MyBlock这种类型来定义block变量
MyBlock block;

block = ^(int a, int b) {
    return a + b;
};

// 调用block
block(3, 5); 
时间: 2024-11-05 22:33:05

08-block的相关文章

oracle9i statspack 报告 分析 direct path read 等待事件

DB Name         DB Id    Instance     Inst Num Release     Cluster Host ------------ ----------- ------------ -------- ----------- ------- ------------ LIXORA          1409317108 LIXORA                1 9.2.0.1.0   NO      lixora-DATA Snap Id     Sna

linux 终端下敲ctrl-c时,到底发生了什么?(转)

通过telnet登录到单板,然后按ctrl-c会发生什么情况,流程是怎么样的? 在分析之前,先介绍tty的相关知识.我们可以认为,所有跟输入输出相关的操作,最终都由tty来接管.举例来说,当我们敲 ls /dev时得到 [cpp] view plaincopy ls /dev/ -l total 0 crw-------  1 root root     10, 235  8月 16 13:08 autofs drwxr-xr-x  2 root root         720  8月 16 

如何读懂statspack报告

前言:这篇文章是我从网上找到的,但可惜不知道是哪位大侠写(译)的,因此这里无法注明了.仔细看了看,这篇文章对初学者应该很有帮助,写的比较详细,通俗易懂,因此整理一下,便于阅读:内容略有调整,不单做调整,此记. 产生一个statspack报告是比较简单的,但是如何读懂statspack报告却不是那么容易,需要对Oracle的体系架构.内存结构.等待事件以及应用系统有充分的了解,加上不断的实践,才能基本读懂statspack报告并且从报告中找到调整优化Oracle的途径. 下面接合一个实际的stat

百度哈斯发卡号是减肥哈卡斯加分了卡斯

http://www.ebay.com/cln/ta_ya20/-/167521224015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398283011/2015.02.08 http://www.ebay.com/cln/ta_ya20/-/167521242015/2015.02.08 http://www.ebay.com/cln/p-m6466/-/167398294011/2015.02.08 http://www.ebay.co

克同极用后管期果要议向中如极示听适VybVfesyhpR

社保划到税务征收,将大大提升社保费的征管效率.税务的征管能力是目前而言最强的,以后税务征收社保不是代收,属于本职了. 之前税局要把社保信息和交个税的工资比对起来有困难!现在好了,个税是自己的,社保也是自己的,比对困难?不存在的! 这一变革,会给那些不给员工上社保.不全额上社保的企业致命一击! 最新案例 前段时间的发改委关于限制特定严重失信人乘坐民航的一则意见--发改财金[2018]385号,其中还有税务总局的联合署名. http://weibo.com/20180408PP/2309279811

08.存储Cinder→1.理解Block Storage

操作系统获得存储空间的方式一般有二种: 通过某种协议(SAS,SCSI,SAN,iSCSI 等)挂接裸硬盘,然后分区.格式化.创建文件系统:或者直接使用裸硬盘存储数据(数据库) 介绍: 第一种裸硬盘的方式叫做Block Storage(块存储),每个裸硬盘通常也称作Volume(卷). 使用lvm划分出的逻辑卷也是块存储,因为操作系统是区分不出到底是逻辑还是物理的,比如,有5个逻辑卷,它一概就认为只是5块裸的物理硬盘而已. 用处:是和主机打交道的, 如插一块硬盘 通过 NFS.CIFS 等 协议

08.存储Cinder→2.理解Block Storage Service

Block Storage Service提供对 volume 从创建到删除整个生命周期的管理.从 instance 的角度看,挂载的每一个 Volume 都是一块硬盘. OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是: 提供REST API使用户能够查询和管理 volume.volume snapshot 以及 volume type 提供scheduler调度volume 创建请求,合理优化存储资源的分配 通过driver 架构支持多种

2014年4月23日 10:22:08

step 1 : 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要直接根据字节流和协议来生成自己的数据对象. 按照之前的编程思维,总是请求然后响应,当然Socket也是请求和响应,不过与单纯的请求响应是不同的. 这里Socket连接往往是要保持住的,也就是长连接,然后设置一个缓冲区,网络流不断的追加到缓冲区.然后后台去解析缓冲区的字节流. http://cuisuqiang.iteye.com/blog/

iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notification方式:3.block方式:4.UserDefault或者文件方式:5.单例模式方式:6.通过设置属性,实现页面间传值 在iOS开发中,我们经常会遇到页面间跳转传值的问题,现归纳总结一下: 情况1:A页面跳转到B页面 方法: 在B页面的控制器中,编写对应的属性,在A页面跳转到B页面的地方,给

hadoop错误Could not obtain block blk_XXX_YYY from any node:java.io.IOException:No live nodes contain current block

错误: 10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry 原因: Datanode 有一个同时处理文件