1.Block是C语言层次的语法,有点类似函数指针,具有运行时的特点
Block objects are a C-level syntactic and runtime feature that allow you to compose function expressions that can be passed as arguments, optionally stored, and used by multiple threads.
iOS SDK 4.0开始,Apple引入了block这一特性,block就是一个代码块,但是它的神奇之处在于在内联(inline)执行的时候(这和C++很像)还可以传递参数。同时block本身也可以被作为参数在方法和函数间传递,这就给予了block无限的可能。
------------------------------------------------------------
2.Block使用
定义Block:
int (^oneFrom)(int);
创建Block:
oneFrom = ^(int anInt) {
return anInt - 1;
};
使用Block
printf("%d\n", oneFrom(10));
说明:
(1)在类中,定义一个Block变量,就像定义一个函数;
(2)Block可以定义在方法内部,也可以定义在方法外部;
(3)只有调用Block时候,才会执行其{}体内的代码;
------------------------------------------------------------
3.Block使用场景
Block很多的用处是跨越两个类来使用的,Block块是在栈中的,除了块就为空
------------------------------------------------------------
4.__block关键字的使用
当在block中腰修改外部的变量时,需要在外部的变量加_Block关键字(外部变量是在block申明时被拷贝下来的,所以外部变量改变时block内对齐的拷贝无影响)
另外一种方法是:使用实例变量
------------------------------------------------------------
5.Block作为property属性实现页面之间传值
网友评论