一,直接上code:
// 在快语句中要改变快语句外面的值,有三种情况:static,__block与全局变量
__block int a = 1;
// 定义快语句
void (^hgBlock)() = ^{
a = 10;
NSLog(@"我在快语句中等你 a=%d", a);
};
// 执行快语句
hgBlock();
二,分析快语句
使用终端进入main.m文件夹,执行指令:clang -rewrite-objc main.m,然后回车.最终生成一个main.cpp.
open main.cpp可以看到如下代码:
得出结论:block的本质就是结构体的指针.
还要注意的是上面的a是怎么传入快语句的,下图所示:
传入的是地址!!!!!所以能改值!!眼来如痴啊!!!!这个很重哦!