Blocks定义
-
定义
(1)Block是OC中的一种数据类型,在iOS开发中被广泛使用(1)^是Block的特有标记(2)Block的实现代码包含在{}之间(3)大多情况下,以内联inline函数的方式被定义和使用(4)Block与C语言的函数指针有些相似,但使用起来更加灵活
-
示例
1 void(^demoBlock)() = ^ { 2 NSLog(@"demo Block"); 3 }; 4 int(^sumBlock)(int, int) = ^(int x, int y) { 5 return x + y; 6 };
-
格式说明:
-
(返回类型)(^块名称)(参数类型) = ^(参数列表) {代码实现};
- 如果没有参数,等号后面参数列表的()可以省略
Block可以使用在定义之前声明的局部变量
1 int i = 10; 2 void(^myBlock)() = ^{ 3 NSLog(@"%d", i); 4 }; 5 i = 100; 6 myBlock();
-
注意:
-
在定义Block时,会在Block中建立当前局部变量内容的副本(拷贝)
-
后续再对该变量的数值进行修改,不会影响Block中的数值
-
如果需要在block中保持局部变量的数值变化,需要使用__block关键字使用__block关键字后,同样可以在Block中修改该变量的数值