iOS-block的学习

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属性实现页面之间传值

你可能感兴趣的:(iOS-block的学习)