1.
可以说block就是函数指针, 但是它是如何成为函数指针的呢?
定义一个block之后用clang打开. 发现编译器其实就是把声明了一个对应格式的函数指针, 并把指针赋值给block.
2.
通过断点实验发现, 虽然block可以实现在main函数中, 但是并一定会去执行它, 只有调用block的时候才会跳入block的实现.
3.
block的实现中使用局部变量操作的是 值. 而不是地址. 因此不可在block中更改局部变量.
在__block申明局部变量之后.
在block实现中调用局部变量时, 发现 局部变量的地址发生改变(在堆区中)