关于Block的碎片整理

iOS中Block内存管理分为三种:

  • NSGloabBlock
  • NSStackBlock
  • NSMallocBlock

1: MRC中使用的__block可以表示若引用,ARC中要使用__weak修饰表示弱引用.

  • NSGloabBlock:retain,copy,release 不会正价引用计数
  • NSStackBlock:retain.release ,copy不会改变引用计数,copy可以
  • NSMallocBlock:位于堆区,retain,release.引用计数改变.

注意:防止block循环引用,正确使用weak 和__block的修饰
验证总结如下:

  • 作用域内定义的block 没有引用外部变量的在全局区 引用了外部变量 在堆区
  • block作为参数 如果引用了外部变量 是在栈区,未引用还在全局区
  • 全局区的block 不会被拷贝到堆区,无论是外部指针引用 还是copy 操作 都没有任何改变
  • 只有栈区的block 如果被外部指针引用 或者copy 才会被拷贝到堆区


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

推荐阅读更多精彩内容

  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 3,790评论 0 23
  • 参考篇:iOS-Block浅谈 前言:本文简述Block本质,如有错误请留言指正。 第一部分:Block本质 Q:...
    梦蕊dream阅读 61,427评论 41 322
  • 第一部分:Block本质 Q:什么是Block,Block的本质是什么? block本质上也是一个OC对象,它内部...
    sheldon_龙阅读 569评论 0 0
  • 大概是在2017年的时候,无意间在一篇标题特别吸引眼球的文章里看到简书二字。当时我正失业,在58同城上找工作,意外...
    陈沅甄阅读 203评论 0 4
  • 我可以随时随地想象你的一举一动 但,你不必知道 我可以随时随地的回忆 但,不会和你一起分享 你若询问 我便若无其事...
    蝉翼呵呵阅读 233评论 2 0