什么是Block

作者: GryllsNSTimer | 来源:发表于2016-01-10 14:37 被阅读196次
    BLOCK是什么?

    苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。

    • BOLCK和函数的相似性:

    • 可以保存代码

    • 有返回值

    • 有形参

    • 调用方式一样。

    • block类型:void(^)()

    • Block存储

    Block默认存储在栈中,访问了外界的对象,不会对对象retain;如果对block进行一次copy,block就会存储在堆中,访问了外界的对象,会对对象进行retain操作。

    Block的定义
    • 注意:
    • 如果block中没有使用外部变量,默认就是全局
    • 如果block中使用了外部变量,就是堆
    • Block可以访问局部变量,但是不能修改。
    • ARC中,默认局部变量是强引用

    Block的格式

    Snip20160107_17.png

    Block定义在函数或方法内

    int (^MyDear)(int, int) = ^(int a, int
    b) {
    return a+b;
    };
    ```
    定义了一个叫MyDear的blocks对象,它带有两个int参数,返回int。等式右边就是blocks的具体实现。
    
    ######block循环引用问题
    
    - block尽量少使用self
    - block尽量少使用下划线(_)直接访问成员属性
    - 要避免强引用到self的话,用__weak把self重新引用一下就行

    相关文章

      网友评论

        本文标题:什么是Block

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