Ios开发随笔之block(一)

来源:互联网 发布:法理学高阶 知乎 编辑:程序博客网 时间:2024/05/24 01:01

ios开发随笔之block(一)

今天主要介绍一下关于ios中block的用法,当然介绍的比较浅显,以后还会慢慢的深入,block是C级别的语法和运行特性,是一个独立函数块,但是它绝对比C的更有优势,无论是在堆内存还是栈内存的引用都是相当灵活的,我们可以通过block作为一个参数传值给另一个函数或者另一个block,同时又可以作为一个闭包来访问其他函数内部的变量来看一个最简单的block:

int value = 2;int (^testBlock)(int) = ^(int num){    return value*num;}

在上面这个例子中,我们先在block外面定义了一个int型的变量,其次是block,我们定义了一个返回型为int型,block名为testBlcok,接收参数为int型的这么一个block,是不是看起来像C中去定义一个子函数那样,它能将它所在的函数中的一个变量value与他自身的接收的参数num进行运算并且将值进行了返回,然而这使这个block并不执行,为什么呢?应为这里你只是定义了一个block,然而并没有去调用它。下面给出完整的例子:

- (void)function{    int value = 2;    int (^testBlock)(int) = ^(int num){        return value*num;    }    int ret = testBlock(6);    NSLog(@"ret = %d",ret);}

结果是:ret = 12;
从上面的例子你也许大概知道block是怎么一回事了;
你有可能会说这不就和回调方法一样吗?是的,它省去你考虑在哪去写回调方法的时间,你只需要在你调用函数时直接写后续的处理过程即可,是不是很方便。因此block在很多场合下都有被应用,比如:某个任务结束时的回调处理,对消息进行监听时回调处理,对图动画及变换时的回调处理,错误消息的回调处理,以及枚举,排序都用到了block。
就先写到这里吧,这里只是一个简单的介绍下block,随后的随笔我也会详细介绍block具体怎么用们以及在在用的时候需要注意的地方。
(PS:原创不易,转载的时候请标记一下出处)
0 0
原创粉丝点击