block 基本用法

//专门处理: 需要重复调用的block(返回值相同,参数相同)

在.h文件中,声明

typedef void(^TypedefBlock)(NSString *);

typedef int(^TypedefBock2)(int a, int b);

- (IBAction)TestAction:(id)sender {
    //调用 无返回值 无参数的block
    VoidBlock();
    
    //调用 带返回值 带参数的block
    int a = 2, b = 3;
    NSLog(@"调用block函数,计算 %d * %d = %d",a, b, blockTest1(a, b));
    
    //调用 typedef 声明的block
    blockTypedef(@"我点击了button");
    
    [self UseBlockWithOC:^(NSString *info) {
        NSLog(@"%@", info);
    }];
    
    //oc语言
    [self UserBlockWithOC2:^int(int a, int b) {
        return a + b;
    }];    
    [self UserBlockWithOC3:^int(int a, int b) {
        return a + b;
    }];
    [self UserBlockWithOC3:blockTypedef2];
    
    //c语言
    UseBlockWithC(^(NSString *info) {
        NSLog(@"%@", info);
    });
    UseBlockWithC2(^int(int a, int b) {
        return a + b;
    });
    UseBlockWithC3(blockTypedef2);
}



/****************** block作为 C 参数 *********************/
void UseBlockWithC(void(^cBlock)(NSString *info)){
    cBlock(@"我是通过 c语言block作为局部参数调用的");
}

void UseBlockWithC2(int(^cBlock)(int a, int b)){
    NSLog(@"c_result: %d", cBlock(200, 300));
}

void UseBlockWithC3(TypedefBock2 cBlock){
    NSLog(@"c_result: %d", cBlock(200, 300));
}

/****************** block作为 OC 参数 *********************/
- (void)UseBlockWithOC:(void (^)(NSString *info)) ocBlock{
    ocBlock(@"我是通过 oc语言block作为局部参数调用的");
}

- (void)UserBlockWithOC2: (int (^)(int a, int b)) ocBlock{
    NSLog(@"oc_result: %d", ocBlock(100, 200));
}

- (void)UserBlockWithOC3: (TypedefBock2) myBlock{
    NSLog(@"typdefBlock作为局部参数: %d", myBlock(100,100));
}

/******************** block处理 **********************/

//.声明并赋值定义一个Block变量
int(^blockTest1)(int, int) = ^(int a, int b){
    return a * b;
};
//typedef :声明并赋值定义一个Block变量
TypedefBlock blockTypedef = ^(NSString *info){
    NSLog(@"来自typedefBlock调用: %@",info);
};

TypedefBock2 blockTypedef2 = ^(int a, int b){
    return a + b;
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值