一、概念
首先需要了解的是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!");
};
这里只是简单的执行了一句话,调用方法就是直接打印或者当作变量直接使用。