zoukankan      html  css  js  c++  java
  • Block

       一:Block的声明:

        void(^myBlock)(int); 

         ↑          ↑          ↑ 

      返回值   变量名    参数 

    有返回值 和多个参数形式的例子:

        int(^myBlock((int, NSString *, NSObject);

       二:Block的创建:

       myBlock = ^(int i){

          NSLog(@"%d", i);

    };

        或者:

    void(^myBlock)(int) = 

    ^(int i){

          NSLog(@"%d", i);

    };

      三:Block的使用:

      myBlock(100);

    就像NSLog(@"aaaaa");一样,直接调用;

       四:Block当做参数传递给方法:

       - (void) testBlock:(void(^)(int)) myBlock{

          myBlock(10);

    }

        调用的时候: [self testBlock:myBlock];

    或者直接创建一个匿名的Block

       [self testBlock:^(int i){

        NSLog(@"%d", i);

    }];

       可以打个断点查看调用堆栈情况,这是一个回调,调用方法的之后再去调用块里的代码;

        五:使用typedof定义代码块类型

    typedef void(^MyBlock)(int);//红色的是块类型的名称

        创建:

    MyBlock block = ^(int i){

            NSLog(@"sss");

        };

        使用:

    block(1);

       在方法里当做参数就更简便了:

    - (void)testBlock1: (MyBlock) block{

        

    }

       

  • 相关阅读:
    centos安装rabbitMQ
    迁移文件时发现SyntaxError: Generator expression must be parenthesized
    2020.9.14、星期一
    自己的github 项目怎么构建
    卡尔曼滤波
    模型转换
    vs2019 安装ncnn
    VS2019配置opencv 4.4
    others
    小脚本
  • 原文地址:https://www.cnblogs.com/mohe/p/3262633.html
Copyright © 2011-2022 走看看