iOS技术专题iOS学习笔记

Block浅析

2016-11-22  本文已影响43人  soulDxl

参考了网上的一些Block的文档,加上自己对Block的使用、理解,对Block做一个简单的分析。

Block是C语言的扩展,像其他语言的闭包一样。简单的可以这么说,Block是带有自动变量(局部变量)的匿名函数。

Block的基本语法
  float (^sum)(float, float) = ^(float a, float b){
        
        return a + b;
    };
    
    sum(1,2);//求和
Block的常见类型

下面分别介绍这三种类型

//MRC环境下...
 int x = 100;
    float (^sum) (int a, int b) = ^ float (int a, int b) {
        return x +a + b;
    };
    NSLog(@"%@",sum);

打印结果:

stack.png
    int x = 10;
    float (^sumMalloc)(float, float) = ^(float a, float b){
        return a + b + x;
    };
    
    NSLog(@"Mallocblock is %@", sumMalloc); //block is <__NSGlobalBlock__: 0x47d0>
    NSLog(@"Mallocsum is %f", sumMalloc(1,2)); //block is <__13>

打印结果:


mallocBlock.png
    float (^sum)(float, float) = ^(float a, float b){
        
        return a + b;
    };
    NSLog(@"block is %@", sum);
    NSLog(@"sum is %f", sum(1,2));

打印结果:


goobalBlock.png

参考这里,理解有不足的地方望指出。

上一篇下一篇

猜你喜欢

热点阅读