美文网首页
Block的使用

Block的使用

作者: 平凡码农 | 来源:发表于2019-05-27 12:11 被阅读0次

block是封装了函数执行上下文环境的对象

block声明及使用语法

block本质是一个对象,那么我们肯定可以声明block类型

typedef 返回类型(^Block类型名称)(参数类型列表...);

//举例
typedef int(^BlockType)(int, int);

//声明一个block变量
BlockType block1;

直接声明一个block变量(不通过类型)

返回值类型 (^blockName)(参数类型列表...);

//举例
int (^block3)(int, int);

定义block的实现

^ 返回值 (参数列表...){
  //block内部功能实现
};

其中,返回值可以省略,如果参数列表为空,那么参数列表也可以省略。

^ (参数列表){
  //block内部功能实现
};

^ {
  //block内部功能实现
};

#pragma makr - 简写
//完整写法
^int (int a, int b) {
  if ( a >= b ) {
    return a;
  } else {
    return b;
  }
};

// 省略返回值 
^(int a, int b) {
  if ( a >= b ) {
    return a;
  } else {
    return b;
  }
};

// 省略返回值及参数        
^ {
  NSLog(@"block");
};

block作为参数类型

- (void)paramBlock:(int (^)(int, int))block {
    if (block) {
        block(4, 6);
    }
}

block作为函数返回值

- (int(^)(int, int))returnBlock {
    int (^maxBlock) (int , int) = ^(int a, int b) {
        if ( a >= b ) {
            return a;
        } else {
            return b;
        }
    };
    
    return maxBlock;
}

如何理解并记忆block类型及block实现的语法呢?

block的定义,采用的是返回值 (^)(参数类型列表...)的样式,这个是不是和函数指针(返回值 (*函数指针)(参数列表类型...))的定义超级像呢?
block的实现,采用的是^ 返回值 (参数类型列表){ }的样式。

相关文章

  • ios block使用

    iOS Block的使用一 .最简单的block使用******使用block的三个步骤:1.定义block变量 ...

  • 白话block

    本文内容 什么是block? block的用途 block的用法 block在使用中遇到的问题 如何使用xcode...

  • iOS Block使用注意

    block本质是两个结构体,使用block使代码简单易读。使用Block注意: 1、block内部使用外部指针,会...

  • iOS Block -浅析 文章

    Block 的使用有两种:1.独立Block 。2.内联Block 。 《一》独立Block 使用方式 一、定义一...

  • OC中的block回顾

    1.block声明 2.block的typedef 2.1 typedef的使用 2.2 声明block类型的使用...

  • Block其实很简单

    Block的几种情况 block的使用 1.使用block实现反向传值 2.利用block写响应式编程的技巧

  • Objective-C 类之间通信

    block的使用 block的定义和使用 变量的作用域及代码的执行顺序 block外部变量的值在block内部具有...

  • Blocks

    使用block修改器 __block

  • iOS开发--当Block、代理、通知遇到女朋友

    什么是Block? 为什么使用Block? 怎么使用Block? 本文将从这三个问题入手来逐渐了解Block。 本...

  • block使用及其底层原理

    一 block基本使用 二 block底层结构 三 block变量捕获 四 block的类型 五 block对象类...

网友评论

      本文标题:Block的使用

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