OC基础 Block

本文介绍了Objective-C中的Block,包括Block的概念、声明、作为函数参数的使用、带参数的Block回调以及Blocks在封装代码中的作用。通过示例展示了Block如何改变代码执行流程,以及如何处理局部变量和对象的引用。Block提供了更灵活的代码组织方式,提高了编程效率。
摘要由CSDN通过智能技术生成

什么是Blocks

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

所谓的匿名函数,就是没有名字的函数,在C语言中是不允许的。
在计算机科学中,这种概念也称为:“闭包Closure”、“lambda计算”等。

而且一般而言,函数或者方法里是不能又出现一个函数的,但是Blocks作为一种数据类型,是可以的。通常Blocks用于封装代码。因为即便是写在函数体内部,不去调用它,就不会执行。

Blocks的声明

//无参数 无返回值
    void (^block1)(void) = ^void(void){
   
        NSLog(@"无参数 无返回值");
    };
    //无参数 无返回值 可省略表达
    void (^block2)(void) = ^{
   
        NSLog(@"无参数 无返回值");
    };
    
    //有参数 无返回值
    void (^block3)(NSString* name) = ^(NSString* name){
   
        NSLog(@"有参数 无返回值");
    };
    //有参数 无返回值 前面声明的参数名称可参略
    void (^block4)(NSString*) = ^(NSString* name){
   
        NSLog(@"有参数 无返回值");
    };
    
    //有参数 有返回值
    int (^block5)(NSString* name) = ^ int (NSString* name) {
   
        NSLog(@"有参数 有返回值");
        return 1;
    };
    
    int number = block5(@"haha");
    NSLog(@"howMuch : %d",number);

运行结果:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值