iOS Block

作者: Lee坚武 | 来源:发表于2016-01-14 23:21 被阅读516次

    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

          本文链接:https://www.haomeiwen.com/subject/tulhkttx.html