[iOS学习]block初识

block是iOS中的一种代码形式,又叫块、闭包。

block在实际使用中,常用来进行值的反向传递和回调。

block的声明方式:

//block、定义
void(^block)(int a) = ^(int a){
    // your codes
    NSLog(@"%d",a);//在控制台打印a
};

//block的调用
int a = 10;
block(a);

/*
block的定义中:
void 的位置是blcok的返回值的类型
blcok 是block的名字
(int a)是block的参数列表
以上三者构成了一个block的声明部分
*/

/*
等号后面的内容:
^(int a)也是参数列表
{}内的内容是block的具体实现代码
以上两者构成了block的实现部分
*/

block的声明、实现可以分开写,并且调用之前需要对blcok进行实现。

对于block回调的理解:

在程序中,执行的顺序是按照代码的上下顺序,从上到下依次执行。这个过程中就好像河流一样,从高到低依次运行 ,直到结束 。而block的作用就让程序运行的流程从block调用的位置跳转到block实现的位置。
我们可以这样理解,程序的执行就像是水流,而block就像是一个有入口的封闭空间。当水流经过这个空间时,会跳过这个地方然后继续向下,直到流经这个空间的入口时,才能进入这个空间。当空间的位置在入口的前边时,就会使水流回流。套用到block的回调中,即当block的实现位置在调用位置的前边时,当程序执行到block的调用处,程序就会跳转到block的实现部分去执行实现代码,这就实现了程序的回调。

举个栗子:

#pragma mark -sentence1 block的声明-
    void (^example)(void);

#pragma mark -sentence2 block的实现-
    example = ^(){
        NSLog(@"我是栗子");
    };

#pragma mark -sentence3 block的调用-
    example();

当程序编译到example这个block的实现的位置时,会跳过实现内部的代码继续向下执行,直到执行到block调用的位置时,才会去寻找这个blcok 的具体实现内容来执行。
在上边的代码中,程序会先执行语句1,然后执行到语句2时会跳过{}里的代码继续向下执行,当执行到语句3时才会去寻找block的实现内容,然后就跳转到语句2里边执行具体的代码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值