美文网首页
block(一)了解block

block(一)了解block

作者: 周二头 | 来源:发表于2018-11-29 14:43 被阅读0次

    block就是代码块组成的匿名函数,block是oc对于闭包的实现

    1.可以嵌套定义,定义block方法和定义函数方法相似

    2.block可以定义在方法内部或外部

    3.只有调用block的时候,才会执行block内的代码

    4.block本质是对象,使代码高聚合

    定义block使用typedef

    typedef  void(^KCBlock)(ViewController*);

    block有三种类型

    1.    __NSGlobalBlock__   静态block      全局

    2.    __NSMallocBlock__   堆block         堆

    3.    __NSStackBlock__   栈block           栈

    !!全局块存在于全局内存中,相当于单例

    !!栈块存在于栈内存中,超出其作用域则马上被销毁

    !!堆块存在于堆内存中,是一个带引用计数的对象,需要自行管理其内存

    int a = 10;//捕获外部变量

    __block int a = 10;//__block修饰的可以在block内部修改a的值,__block是浅拷贝了一个值,内存地址改变了

    //无参无返回block

    void(^block)(void) = ^{

    NSLog(@"hello block");

    };//匿名函数

    NSLog(@"第一种block%@",block);  //万物皆对象-->RAC万物皆signal

    void(^twoblock)(void) = ^{

    NSLog(@"hello block %d",a);

    };//匿名函数

    block();

    twoblock();

    NSLog(@"第二种block%@",twoblock);  

    NSLog(@"第三种block:%@",^{

    NSLog(@"%d",a);

    });

    相关文章

      网友评论

          本文标题:block(一)了解block

          本文链接:https://www.haomeiwen.com/subject/tqmbqqtx.html