黑马程序员——OC语言加强---block的typedef

本文介绍了Java培训中关于Block的使用,通过定义Block类型、创建Block实例,并演示了如何在实际代码中调用Block来执行特定任务。重点阐述了Block的灵活应用,及其在不同场景下的优势。

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

                                                                         ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

blocktypedef

1、block的typedef

可以使用typedef定义一个Block的类型,便于在后续直接使用

格式:

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

举例:typedef int(^MyBlock)(int ,int);  

代码范例:

<span style="font-size:14px;">typedef double(^MyBlock)(double, double);
MyBlock area = ^(double x, double y){
return x * y;
};
MyBlock sum = ^(double a, double b){
return a + b;
};
NSLog(@"%.2f", area(10.0, 20.0));
NSLog(@"%.2f", sum(10.0, 20.0));</span>

说明

1)typedef是关键字用于定义类型,MyBlock是定义的Block类型

2)areasum分别是MyBlock类型的两个Block变量

尽管,typedef可以简化Block的定义但在实际开发中并不会频繁使用typedef关键字

这是因为Block具有非常强的灵活性,尤其在以参数传递时,使用Block的目的就是为了立即使用

而如果使用typedef,则需要:

1)typedef void(^EnumerateBlock)(id obj, NSUInteger idx, BOOL *stop);

2)- (void)enumerateObjectsUsingBlock:(EnumerateBlock)block;

而最终的结果却是,除了定义类型之外,EnumerateBlock并没有其他用处

<span style="font-size:14px;">#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {      
        // 定义一个block变量,并且赋值
        void (^myBlock)() = ^{        
            NSLog(@"helloworld");        
        };
        myBlock();        
        //定义一个别名
        // 给 没有返回值 没有参数的block起一个别名
        // Block 是一个类型,不在是一个单纯的变量了
        typedef void (^Block)();
        Block b1;
        //block类型的变量
        b1 =^{
            NSLog(@"helloworld");
        };        
        b1();        
        //定义有参数\有返回值的 block类型
        //定义新的别名
        //返回值是int 有两个 int类型的参数
        typedef int (^NewType1)(int ,int );        
        NewType1 nt1 = ^(int a,int b){        
            return a+b;        
        };        
        //连续定义多个 NewType类型的变量
        NewType1 n1,n2,n3;
        n1 = ^(int x,int y){           
            return x>y?x:y;
        };        
        int s = nt1(12,23);
        NSLog(@"s = %d",s);              
    }
    return 0;
}</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值