IOS Block

1.

声明:

void (^TestBlock) (int,int) = ^(int x,int y)

{

    NSLog(@"%d",x*y);

};

调用:TestBlock(3,5);

 

2.直接使用

 ^(int x,int y){

            NSLog(@"%d",x + y);

        }(3,7);

 

3.返回值调用

int (^Test)(int,int)=^(int x,int y){

            return x*y;

        };

        

        int l = Test(4,7);

        NSLog(@"%d",l);

 

4.block中的变量是一个复制的值,例如

int x = 1;

        void (^Test)(void)=^(void){

            NSLog(@"%d",x);

        };

        

        Test();

        x = 2;

        Test();

输出为1 1,而不是1 2

如果在变量前加__block,则变量会与block为同一个作用域,block外修改变量也会随之修改,同理,block中也可以修改变量的值。

如果上例中int x=1;改为__block int x = 1; 则输出为1 2

 

posted @ 2015-04-23 12:36  朋克  阅读(185)  评论(0编辑  收藏  举报