美文网首页知识点总结
iOS 关于Block一些知识点记录

iOS 关于Block一些知识点记录

作者: 飞不越疯人院 | 来源:发表于2019-04-03 11:37 被阅读0次

    ● _NSConcretStackBlock 栈区
    ● _NSConcretGlobalBlock 全局
    ● _NSConcretMallocBlock 堆区

    Block: 代码块, 类似方法; (方法在调用时从硬盘读取到内存, 然后执行, 执行后就消失);
    所以方法的内存不需要我们管理, 也就是说方法在内存的栈区;
    block不像OC中的类对象(在堆区),Block是在栈区, 没法控制其消亡, 但是当用copy修饰的时候, 系统会把block拷贝一份到堆区, 这样就拥有了该block的所有权,进而控制其消亡的周期;

    block为什么要用copy修饰?

    block类似于于方法, 方法是调用的时候从硬盘读取到内存, 然后去执行, 执行完毕就消失, 所以方法的内存不需要我们
    手动管理, 也就是说方法存在于内存中的栈区;
    OC中的类对象, 存在于堆区;
    block存在于栈区, 所以没法控制其消亡, 使用copy修饰后相当于拷贝一份到了堆区, 对于这样的属性, 就拥有了该

    ARC:

    block 的所有权, 保证block代码块不会被提前消亡;
    如果用weak修饰, 择block存在于栈空间;
    用__weak修饰防止循环引用的问题;

    MRC:

    用__block修饰,防止循环应用的问题;

    block内部想对外部的变量修改需要用__block修改;


    iOS Block

    相关文章

      网友评论

        本文标题:iOS 关于Block一些知识点记录

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