zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    个人博客
    个人博客
    5.4
    4.30
    4.29
    4.28
    4.27
    4.26
    4.25
    4.24
  • 原文地址:https://www.cnblogs.com/punkrocker/p/4450139.html
Copyright © 2011-2022 走看看