首页 > 代码库 > iOS复习笔记10:使用Block

iOS复习笔记10:使用Block

功能:保存一段代码,可以在任何时间执行。
标志:^
跟函数类似:
1 可以保存一段代码
2 有返回值
3 有形参
4 调用方式
变量声明:更函数指针变量类似
返回值类型 (^变量名)(参数类型列表)


typedef:
返回值和参数一致的block可以typedef为同一种类型


权限:
block内部可以访问外面的变量;
但是,默认情况下,block内部不能修改外面的局部变量;
可以在局部变量加上__block关键字之后,这个变量就可以在block内部修改。




示例:
// main.m
#import <Foundation/Foundation.h>


typedef int (^MulBlock)(int, int));


int main()
{
	// 定义一段block,并赋值给block变量block1
	void (^block1)() = ^{//如果没有形参,可以省略参数列表
		NSLog(@"this is a block");
	};
	// 执行block
	block1();


	int (^addBlock)(int, int));
	


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


	int (^subBlock)(int, int)) = ^(int a, int b){
		return a - b;
	};


	NSLog(@"%d + %d ", addBlock(2, 1), subBlock(2 - 1));


	MulBlock add = ^(int a, in b){
		return a + b;
	};


	MulBlock mul = ^(int a, in b){
		return a * b;
	};


	return 0;
}


iOS复习笔记10:使用Block