首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

(一)、block基本使用

2024-12-17 来源:花图问答

block的�作用:


用来保存一段代码

block的声明:


返回值(^block变量名)(参数), 如:------> void(^block)()

block的定义:三种方式 ^(参数){};


第一种

void(^block)() = ^(){
  
};

第二种:
如果没有参数,参数可以隐藏


void(^block)() = ^{
};

第三种:
block返回类型可以省略,不管有没有返回值,都可以省略
定义的时候,有参数 必须要写参数,而且必须要有参数变量名


int(^block)() = ^int{
    return 1;
};

block的类型


int(^block)(NSString *) = ^(NSString *name){
    return 1;
}

block的调用


block();

block变量传递


注意点: 如果是局部变量,block是值传递
**注意点: **如果是静态变量,全局变量,_block修饰的变量,block是指针传递


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    int a = 1;
//    __block int a = 1;
//    static int a = 1;
    void(^block)()=^{
        NSLog(@"%d",a);
    };
    a = 2;
    // 调用
    block();

    NSLog(@"%@",block);
}

输出结果:
使用局部变量时的输出结果

int a = 1;

使用静态变量时的输出结果

static int a = 1;

使用__block变量跟全局变量时的输出结果

__block int a = 1;
//或
a = 1;

block使用的快捷方式


在xcode中输入typedefblock,即可快捷生成以下block声明代码

typedef <#returnType#>(^<#blockName#>)(<#arguments#>);

在xcode中输入inlineBlock,即可快捷生成以下block代码

<#returnType#>(^<#blockName#>)(<#parameterTypes#>) = ^(<#parameters#>) {
        <#statements#>
};
显示全文