ios bolck理解

blcok分为全局blcok,堆block,栈block

MRC
只要block没有访问外部变量,就是全局block。访问了外部变量,就是栈block。显示地调用[block copy]就是堆block。

ARC
只要没有访问外部变量,就是全局block。如果访问了外部变量,那么在访问外部变量之前存储在栈区,访问外部变量之后存储在堆区。

__block的作用:将外部变量的传递形式由值传递变为指针传递,从而可以获取并且修改外部变量的值。同样,外部变量的修改,也会影响block函数的输出。

block循环引用问题:当一个类的对象持有block,block里面又引用了这个对象,那么就是一个循环引用的关系。可以用strong-weak-dance的方法解除循环引用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Block源码解析和深入理解 Block的本质 Block是"带有自动变量值的匿名函数". 我们通过Clang(L...
    十三亿少女梦丶阅读 8,429评论 1 18
  • 0.前言 日常开发中经常会用到 Block,但如果对它的底层实现没有深入地挖掘过,就不能算是真正掌握,本篇就来探究...
    RiverSea阅读 4,059评论 0 13
  • block简单粗暴的理解 OC的block底层就是个OC对象,包含isa指针,封装了函数的调用. OC的block...
    li_礼光阅读 4,545评论 2 4
  • 开始之前,我想先提几个问题,看看大家是否对此有疑惑。唐巧已经写过一篇对block很有研究的文章,大家可以去看看(本...
    高思阳阅读 5,587评论 0 1
  • 最近在做项目整理,闲暇之余和大家分享一下Block。block是在我们应用程序中应该是最多的地方之一吧,各式各样的...
    coenen阅读 3,328评论 0 2