Objective-C blocks 概要-1.block的使用

时间:2024-03-10 17:49:39

1.1什么是block?

Blocks是C语言的扩充功能:带有自动变量(局部变量)的匿名函数。

“带有自动变量”在Blocks中表现为“截取自动变量"
“匿名函数”就是“不带名称的函数”

块,封装了函数调用及调用环境的OC对象

  • block的声明
// 1.
@property (nonatomic, copy) void(^myBlock1)(void);
// 2.BlockType:类型别名
typedef void(^BlockType)(void);
@property (nonatomic, copy) BlockType myBlock2;
// 3.
// 返回值类型(^block变量名)(参数1类型,参数2类型,...)
void(^block)(void);
  • block的定义
    // ^返回值类型(参数1,参数2,...){};
    // 1.无返回值,无参数
    void(^block1)(void) = ^{
        
    };
    // 2.无返回值,有参数
    void(^block2)(int) = ^(int a){
        
    };
    // 3.有返回值,无参数(不管有没有返回值,定义的返回值类型都可以省略)
    int(^block3)(void) = ^int{
        return 3;
    };
    // 以上Block的定义也可以这样写:
    int(^block4)(void) = ^{
        return 3;
    };
    // 4.有返回值,有参数
    int(^block5)(int) = ^int(int a){
        return 3 * a;
    };
  • block的调用
    // 1.无返回值,无参数
    block1();
    // 2.有返回值,有参数
    int a = block5(2)