博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
块代码编程---声明和创建块代码
阅读量:6363 次
发布时间:2019-06-23

本文共 1076 字,大约阅读时间需要 3 分钟。

声明一个块代码的引用

块代码变量用来保存到块代码的引用。使用和声明函数指针相识的语法声明块代码变量,只是把其中的*换成占位符^。块代码类型基本上都是C语言的格式。下面就是一些有效的块代码变量声明:

void (^blockReturningVoidWithVoidArgument)(void);
int (^blockReturningIntWithIntAndCharArguments)(int, char);
void (^arrayOfTenBlocksReturningVoidWithIntArgument[10])(int);

块代码同样支持可变参数列表。没有参数的块代码必须在参数列表中使用void。

块代码在传入参数,返回值等方面使用元数据验证,在设计上达到数据安全的目的。你可以把一个块代码的引用转换成一个任何类型的指针,反之亦然。但是你不能通过一个指针引用来对一个块代码引用进行解引用--因为在编译时期不能计算块代码所占大小。

你可以创建块代码的类型--只是你在多个地方创建同一种类型的块代码的最好的方式:

typedef float (^MyBlockType)(float, float);
 
MyBlockType myFirstBlock = // ... ;
MyBlockType mySecondBlock = // ... ;

创建块代码

使用^标示一个块代码的开始。可能后面跟着使用一对小括号括起来的参数列表。块代码的代码部分是在一对大括号里面。下面是一个块代码定义的示例,并把这个块代码赋值给一个前面声明的块代码变量--和C语言一样,块代码使用一个分号;作为定义的结束:

int (^oneFrom)(int);
 
oneFrom = ^(int anInt) {
return anInt - 1;
};

如果你在块代码定义中没有标示返回值类型,返回值类型会被通过块代码的内容推断出来,如果这个返回值是推断出来的,并且参数列表是void,你可以省略这个void。如果多个return语句出现,他们必须返回完全相同类型的值(合适的时候必须使用转换)。

全局块代码

在文件作用域内,你可以定义一个块代码具有全局可用的:

#import 
 
int GlobalInt = 0;
int (^getGlobalInt)(void) = ^{ return GlobalInt; };

转载于:https://www.cnblogs.com/pengyingh/articles/2356810.html

你可能感兴趣的文章
shell脚本学习
查看>>
elementUI实现前端分页
查看>>
git使用笔记
查看>>
图片的上传和裁剪
查看>>
jquery 集合操作
查看>>
多叉树转换二叉树
查看>>
'qt_sql_default_connection' is still in use
查看>>
剑指offer五:
查看>>
NOI 1.7编程基础之字符串(35题)
查看>>
实验6——流类库与I/O
查看>>
Spring Boot: Spring Starter Project
查看>>
NTSD
查看>>
散列函数的构造方法
查看>>
chapter4.5匿名函数
查看>>
网站跨站点单点登录
查看>>
ps aux|awk -F'[ ]+' '$3>90{print $2}'|xargs -n1 kill -9
查看>>
uva 1349(费用流)
查看>>
SpringMVC 返回JSON
查看>>
Scala使用隐式转换进行比较
查看>>
mysql 数据库 (基础) 笔记
查看>>