Block

Posted alineware

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Block相关的知识,希望对你有一定的参考价值。

1.概述(block变量的声明)

1. block是一个数据类型

2. 数据类型的作用:

  • 可以声明一个这个数据类型的变量, 用来存储数据

    block 也是一个数据类型, 所以也可以声明一个 block 类型的变量, 往这个变量中存储数据

    block 类型变量是专门用来 存储一段代码的, 这段代码可以有参数和返回值

3. block 变量的声明

  • 变量的声明~

    在声明 block 变量的时候, 必须指定这个 block变量中可以存储的代码的参数和返回值描述

    一旦指定, 这个 block 变量中只能存储这样的代码段.别的格式的代码段是无法存储进去的.

  • block 类型变量的声明格式
    • 指定这个 block 变量中存储的代码段的返回值和参数
      返回值类型 (^block变量名)(参数列表);

4.特别注意

  • 1 个 block 变量中只能存储和这个 block变量要求相同的1 段代码段.

2. block变量的初始化

1.block 变量的初始化:

  • 定义: 写一段符合 block变量要求的代码, 把这段代码存储到这个 block变量中.
  • block代码段的语法格式: 固定格式
    ^返回值类型 (参数列表) { 代码段; };

    表示 block 变量中存储了这段代码

3.执行/使用/调用

  • 如何执行存储在block 变量中的代码
  • 格式
    `block 变量名();

    有参传参, 有返回值接返回值

4. 简写 block

  1. 如果一个代码段没有参数, 那么这个代码段的小括号可以省略

    声明 block 的时候没有参数也是不可以省略小括号的.

  2. 在写一个代码段的时候, 可以省略返回值类型. 这个时候系统会自动判断这个代码段的返回值类型.

    (如果有返回值就自动判断返回 return 后面的数据类型, 没有就自动判断为 Void)

  3. 在声明 block 的时候, 可以只写参数的类型

    省略参数的变量名字

  4. 使用 typedef简化 block 定义
  • 查看系统数据类型的头文件定义

    语法格式:typedef 返回值类型 (^新类型) (参数列表)

    定义了一个数据类型, 这个数据类型名称叫做 newType
    这个是一个(声明描述)的 block 类型

以上是关于Block的主要内容,如果未能解决你的问题,请参考以下文章

Sphinx - 在代码块片段中使用省略号 (...)

Objective-C Block与函数指针比较

使用do block vs braces {}

为啥 GL_MAX_UNIFORM_BLOCK_SIZE 的值会发生变化?

20160215.CCPP体系详解(0025天)

看懂iOS代码块Block