版权声明:本文为博主原创,如需转载请注明出处。
没有返回值、没有形参的block
block 用来保存一段代码
block的标志:^
block跟函数很像:
- 可以保存代码
- 有返回值
- 有形参
- 调用方式一样
定义 block 变量
1 | void (^myblock)() = ^(){ |
如果block没有形参,可以省略后面的()
1 | void (^myblock)() = ^{ |
利用block变量调用block内部的代码
1 | myblock(); |
有返回值、有形参的block
指针函数的指针
1 | int (*p)(int, int) = sum; |
1 | int (^sumblock)(int, int) = ^(int a, int b){ |
用一个block输出n条横线
1 | void (^lineBlock)(int) = ^(int n) |
分割
访问变量问题
1 | int a = 10; |
分割
用好 typedef
1 | int (^sumBlock)(int, int); |
上述方式创建代码过于繁琐,利用 typedef 简化
1 | typedef int (^MyBlock)(int, int); |
分割
总结 block 需要掌握的内容
- 如何定义block变量
1 | int (^sumBlock)(int, int); |
- 如何利用block封装代码
1 | ^(int a, int b) { |
- block访问外面变量
- block内部可以访问外面的变量
- 默认情况下,block内部不能修改外面的局部变量
- 给局部变量加上__block关键字,这个局部变量就可以在block内部修改
- 利用typedef定义block类型
1 | typedef int (^MyBlock)(int, int); |