Objective-c - block的简写

本文介绍 Objective-C 中 Block 的声明、初始化及调用方法,并演示如何使用 typedef 简化 Block 的定义过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

 Objective-c - block的简写

 

        1> block变量声明的语法:

 

                            返回值类型 (^block变量名称)(参数列表)

 

                             1:

                             void(^firstBlock)();

                             :声明了一个名称叫做firstBlockblock类型的变量,并且这个变量中只能存储没有参数,没有返回值的一段代码.

                             

                             2:

                             int(^firstBlock)(int num1, int num2);

                             :声明了一个名称叫做firstBlockblock类型的变量,并且这个变量中只能存储返回值为int类型且有两个int类型的参数的一段代码.

                             

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

 

 

        2> block变量的初始化

 

 

                         语法格式:

                         ^返回值类型(参数列表)

                         {

                         代码;

                         };

 

                         1:

                         //声明一个block变量

                         void(^firstBlock)();

                         //初始化

                         firstBlock = ^void()

                         {

                            NSLog(@"大家好!");

                         };

                         //代表名字叫firstBlock的变量中存储了一段代码.

 

                         2:

                         //声明一个block变量

                         int(^firstBlock)(int num1, int num2);

                         //初始化

                         firstBlock = ^int(int num1, int num2)

                         {

                            int sum = num1 + num2;

                            return sum;

                         };

                         //代表名字叫firstBlock的变量中存储了一段代码.

 

 

        4> block代码块的调用执行

 

                         语法格式:

                         变量名();

                         :有参数就传参数,有返回值就接收.

 

 

        5> block的简写

 

            1,如果一个代码段没有参数,那么这个代码段的小括弧可以省略.但声明block变量的小括弧是不可省略的.

 

                :

                void(^firstBlock)() = ^void{

                        NSLog(@"大家好!");

                    }

 

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

                :如果代码段中使用return返回数据,那么系统会设定返回值类型为返回的数据的类型;

                  如果代码段中没有返回数据,系统会认定返回值类型void.

 

            3,在声明block变量的时候,如果要求存储的代码段有参数,这个时候参数可以省略名称只写类型.

            

                :

                int(^firstBlock)(int, int);

                但代码段必须同时写参数的类型和名称.

 

 

        6> 使用typedef简化block定义

 

            typedef:为已经存在的数据类型起别名.我们可以使用typedefblock定义一个别名.

 

            语法格式:

                    typedef 返回值类型 (^新类型名称)(参数列表);

 

            1:

                typedef void(^NewType)();

                代表定义了一个无参数无返回值的block类型,同时用typedefblock类型起了一个别名为:NewType,此时NewType就代表一个无参数无返回值的数据类型,可以直接使用NewType定义block变量.

 

            2:

                typedef int(^NewType)(int num1, int num2);

                代表定义了一个新的数据类型,名字叫做NewType,是一个返回值类型为int,有两个int类型的参数的block类型.此时可以直接使用NewType定义返回值类型为int,有两个int类型的参数的block变量.

 

 

 代码如下:

 

 */


#import <Foundation/Foundation.h>


int main(int argc, const char * argv[]) {

    

    //使用typedef定义一个无返回值无参数的block类型;

    typedef void(^NewType)();

    

    //使用typedef的新数据类型定义变量并初始化

    //没有参数的话代码段的小括弧可以省略不写

    NewType b1 = ^void{

        NSLog(@"大家好!");

    };

    

    //调用

    b1();

    

    //使用typedef定义一个返回值类型为int,有两个int类型的参数的block类型;

    //在声明block变量的时候,如果要求存储的代码段有参数,这个时候参数可以省略名称只写类型. 但代码段必须同时写参数的类型和名称.

    typedef int(^NewType2)(int, int);

    

    //使用typedef的新数据类型定义变量并初始化

    //在写一个代码段的时候可以省略返回值类型,这个时候系统会自动的判断这个代码段的返回值类型.:如果代码段中使用return返回数据,那么系统会设定返回值类型为返回的数据的类型;

    NewType2 b2 = ^(int num1, int num2){

        int sum = num1 + num2;

        return sum;

    };

    

    //调用

    int sum = b2(10, 20);

    NSLog(@"10 + 20 = %d", sum);

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值