关于Block代码块的使用方法
2013-03-12 11:16
246 查看
一、概念
首先需要了解的是Block是一个代码块,是一个变量的形式存在的。
二、构成了解
我们需要在函数中声明block,因为是变量的形式,而且存在静态变量形式
类型1:
NSString* (^blocks)(NSString*)= ^(NSString *str)
{
//NSLog(@"this is :%@",str);
return str;
};
返回值类型是字符串,如同函数一样,返回值类型写在最前面
^blocks是声明一个代码块,名字叫做blocks
后面括号跟的是参数的类型,如果没有参数返回void,如果有多个参数类型,那么逗号分隔列出
等于号后面的是参数名列表。
因为写的是一个有返回值的block,所以需要return一个与返回值类型相同类型的值,这里返回的是参数字符串
类型2:
int (^david)(int)= ^(int num)
{
return num*5;
};
这里的返回值类型是一个int,代码块名字叫做david,参数是一个int类型的变量
等于号后面是参数列表,执行的语句是return num *5这句话。
因为如上的两个例子都是有返回值的类型,那么我在调用的时候可以直接使用。
例如:
NSLog(@"this is block:%@",blocks(@"hello"));
NSLog(@"this is block:%d",blocks(5));
类型3:
void (^david)(void)= ^(void)
{
NSLog(@"I am a block code!");
};
这里只是简单的执行了一句话,调用方法就是直接打印或者当作变量直接使用。
首先需要了解的是Block是一个代码块,是一个变量的形式存在的。
二、构成了解
我们需要在函数中声明block,因为是变量的形式,而且存在静态变量形式
类型1:
NSString* (^blocks)(NSString*)= ^(NSString *str)
{
//NSLog(@"this is :%@",str);
return str;
};
返回值类型是字符串,如同函数一样,返回值类型写在最前面
^blocks是声明一个代码块,名字叫做blocks
后面括号跟的是参数的类型,如果没有参数返回void,如果有多个参数类型,那么逗号分隔列出
等于号后面的是参数名列表。
因为写的是一个有返回值的block,所以需要return一个与返回值类型相同类型的值,这里返回的是参数字符串
类型2:
int (^david)(int)= ^(int num)
{
return num*5;
};
这里的返回值类型是一个int,代码块名字叫做david,参数是一个int类型的变量
等于号后面是参数列表,执行的语句是return num *5这句话。
因为如上的两个例子都是有返回值的类型,那么我在调用的时候可以直接使用。
例如:
NSLog(@"this is block:%@",blocks(@"hello"));
NSLog(@"this is block:%d",blocks(5));
类型3:
void (^david)(void)= ^(void)
{
NSLog(@"I am a block code!");
};
这里只是简单的执行了一句话,调用方法就是直接打印或者当作变量直接使用。
相关文章推荐
- iOS --- 关于block的常见使用方法
- 关于Block代码块的使用
- iOS --- 关于block的常见使用方法(OC)
- 关于static语句,构造代码块,构造方法的执行顺序
- 关于更改ip后dbconsole服务不能启动(em不能使用)问题的根本解决方法
- 关于jQuery中的trigger和triggerHandler方法的使用
- 关于使用JSPatch重写setter方法
- iOS开发 Block的使用方法和规范,以及可能遇到的问题
- 关于cygwin的使用方法的博客地址
- 关于 通过jlink使用jtag(或swd)下载程序成功后,keil4 uversion停止运行 的解决方法
- SQL Server 中关于EXCEPT和INTERSECT的使用方法
- IOS中得block代码块的定义及使用
- Linux系统平台下关于GCC编译及使用的方法(-Werror,它要求GCC将所有的警告当成错误进行处理 )
- 关于Windows 8 开发之测试代码的使用方法
- Block的使用--页面传值方法及探究
- 关于ios定时器NSTimer的俩种使用方法
- 关于 ie 下使用 iframe 加载子页面时,子页面ajax数据能进入success方法,但是数据为空的问题
- 关于C#Winform线程调用窗体的使用方法以及窗体的单一显示
- 关于在jquery中使用iscorll实现上拉下拉加载刷新的方法
- C# 关于线程锁lock的使用方法