初探Block

本文主要介绍了Block在iOS开发中的概念和作用,详细讲解了Block的语法,包括block表达方式、截获自动变量值的机制,并通过实例演示了__block关键字的使用。最后,通过一个实际案例阐述了Block如何在页面间传递值,展示了Block在解决局部变量作用域问题和数据传递方面的优势。
摘要由CSDN通过智能技术生成

一、Block概要

   回顾一下C语言的变量,分别有:局部变量、静态变量和全局变量。由于静态变量和全局变量本身存在的安全问题,所以在编程中尽量少的使用它们就成为必然,而局部变量的作用域的局限性使得传值成为编程中的很重要的一部分。这时,Block的作用就体现出来了。 Block是C的扩充功能,也可以说是带有自动变量的匿名函数,在计算机科学中也可以称其为闭包或Lambda计算,本文将就Block的传值功能做下介绍,由于本文是基于xcode的iOS开发,所以将其统称为Block。

二、Block语法

    1.block表达方式:

^(int a){
    //在这里输入要执行的代码
}
     block的语法相当简单,返回值类型可以省略,系统会根据Block体中是否包含return的指令自动判断是否有返回值以及返回值类型。 

    在C语言中,可以把定义的函数的地址复制给函数指针变量类型中:

int function(int a);
int *functionP = &function;
    同样的,我们也可以把Block的地址赋值给Block类型的变量中:
int (^Num)(int) = ^(int a){
            return a+1;
        };
    这样,就可以通过调用名为Num的Block变量来执行Block中命令了。上面的命令看起来是不是很眼熟?没错,只是用^代替了*而已,其他的和函数基本一致就可以了。

    另外,Block变量可以当作一般的变量使用:

        int (^Block)(int) = ^(int a){
            return a+1;
        };
        
        int (^Block1)(int) = Block;
        int (^Block2)(int);
        Block2 = Block1;
        NSLog(@"%d",Block2(1));
        
        //输出为2016-04-14 00:18:03.579 BlockText_OC[8522:96046] 2

    2.截获自动变量值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值