Block的深入了解

block的结构体如下

Block是带有自动变量的匿名函数;

有三种类型的Block:

_NSConcreteGlobalBlock

_NSConcreteStackBlock

_NSConcreteMallocBlock     

Block截获外面的自动变量:

全局变量不会被截获;

没有被__block修饰的int,block体中对这个变量的引用是值拷贝,在block中是不能被修改的;

通过__block修饰的int,block体中对这个变量的引用是指针拷贝,它会生成一个结构体,复制这个变量的指针引用,从而达到可以修改变量的作用;

Block发生copy时机:

block作为方法或函数的返回值时,编译器会自动完成copy操作。

当block赋值给通过strong或copy修饰的id或block类型的成员变量时。

当 block 作为参数被传入方法名带有 usingBlock 的 Cocoa Framework 方法或 GCD 的 API 时。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 世事洞明皆学问,人情练达即文章。腹有诗书气自华,人通国学身自重。 什么是Block Block 是C语言的扩充功能...
    背包技术阅读 4,474评论 0 1
  • 本文中代码所依赖的环境是 Xcode 9.0 Apple LLVM 9.0.0 ARC环境 block的类型 Ob...
    songgeb阅读 3,991评论 0 0
  • iOS开发---Block详解 Block的基础 什么是Blocks? 用一句话来描述:带有自动变量的匿名函数(是...
    祀梦_阅读 4,635评论 0 6
  • 本文用于记录近期学习block底层后的理解。本文的参考博文:Block技巧与底层解析谈Objective-C bl...
    Jabber_YQ阅读 5,826评论 1 4
  • 本文主要根据《Objective-C高级编程》这本书中的第二章来进行的一个总结,其中包含了查看其它文章后的总结和自...
    AnICoo1阅读 4,819评论 0 2

友情链接更多精彩内容