block的简单使用

**

block的简单使用

**

//
//  main.m
//  block_的使用
//
//  Created by mac on 2021/5/31.
//
//block也可以作为函数的返回值 但是返回值类型必须使用typedef定义短类型
/**
 block与函数的比较
 1  block是一个数据类型,函数就是函数
 2 我们可以声明block行的变量  函数就是函数
 3 block可以作为函数的参数,函数能直接做我函数的参数
 */
#import <Foundation/Foundation.h>
typedef void (^NewType3)();
void test(NewType3 block3){
    NSLog(@"我是上面的");
    block3();
}

typedef int (^NewType4)(int num1,int num2);
void test2(NewType4 block){//这块就不用写参数了因为上面 定义了一些东西
    NSLog(@"我是算数的");
    block(10,20);
}
int main(int argc, const char * argv[]) {
    NewType3 type=^{
        NSLog(@"哈我是下面的");
    };
    test(type);
    test2(^(int num1, int num2) {
        int res=num2+num2;
        return res;
    });
    
    
    
    void (^myBlock1)()=^void(){//
        NSLog(@"我是block");
    };
    myBlock1();
    int (^myBlock2)()=^int(){
        return 0;
    };
    int res=myBlock2();
    NSLog(@"数字%d",res);
    
    int (^myblock3)()=^int(int num1,int num2){
        int result=num1+num2;
        return result;
    };
    int res2=myblock3(1,2);
    NSLog(@"相加%d",res2);
    //虽然简写有很多,但我们仍然推荐用最标准的方式简写
    
    //可以使用typedef简化
    typedef void (^NewType)();
    NewType block=^{
        NSLog(@"nihao");
    };
    typedef int (^NewType2)(int num1,int num2);
    NewType2 block2=^int(int num1,int num2){
        int res=num1+num2;
        return  res;
    };
    /**
     关于block访问变量问题   全局 定义在外的局部  自己的局部
     1 可以看这三个变量
     2 可以修改全局,但不可以修改定义在外的局部
     3  非要修改定义在外的局部 需要在上面加上_block修饰符   _block int num=100;
     */
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值