1、什么是block
block是带有局部变量的匿名函数
2、截获自动变量
block会截获自动变量的瞬间值
__block修饰符 如果被截获的变量想要在block执行时被赋值,必须使用__block修饰
3、block的实现
block的语法看上去很特别,但实际上block是作为极普通的c语言源代码来处理的。 block即为oc对象
block截获自动变量时在block结构体中保存一份自动变量的【值】 __block修饰的变量也以结构体形式存在
block结构体 和 __block变量 结构体都是在栈上创建的,当栈被销毁是,相应的结构体被拷贝到堆上。
4、block的循环引用
对象持有block,block反过来又持有对象时,就造成了循环引用。 解决方案:block持有对象的弱引用
新闻热点
疑难解答