OC 中 block 的严格定义,语法,格式,调用


  1. 是C语言的功能,iOS4.0之后可以使用。和其他动态语言的闭包(closure)类似,和 swift 中的 closure 闭包几乎一样。
  2. 严格定义:块对象就是把可执行的代码和代码中的可以访问的变量“封装”起来,之后在某个时间点处理的包。
  3. Block 的作用:
    • 可以作为函数/方法的参数
    • 可以作为函数/方法的返回对象
  4. 明确三个 Block 术语
    • Block 声明(Block declaration)
      • 通用词:Block (变量)声明

    • Block 定义(Block literal:块句法)
      • 通用词:Block (对象)定义

    • Block 调用:执行的 Block 体(Block body)中的逻辑
  5. Block 声明的语法:
    • return_type(^block_name)(param_type,param_type...)
      • return_type:返回值类型
      • block_name:Block 变量名字
      • param_type:参数类型
      • 例子:int(^blockName)(int)
  6. Block 定义的语法:
    • ^(param_type param_name,param_type param_name...){block body}
      • param_type:参数类型
      • param_name:参数的名字
      • 例子:^(int index){printf("%d\n",index);return index * 2};
  7. 结合声明和定义
    • int(^blockName)(int) = ^(int index){printf("%d\n",index);return index * 2;};

未完待续。。。