一、强指针引用的block,内部引用OC对象的局部变量。
强指针引用的block,内部引用OC对象的局部变量,需要对oc对象进行内存管理,因此相对于访问基本数据类型,__main_block_desc_0结构体内部会多出两个成员变量:main_block_copy_0和main_block_dispose_0。
1.block引用auto修饰的OC对象,默认是strong修饰,对其进行强引用,block的copy操作,也会对oc对象进行copy操作。


1.1__main_block_desc_0结构体包含copy和dispose的函数,会对oc对象进行copy操作,进行强引用,和dipose操作。

2.block引用week修饰的OC对象,对其进行弱引用,block的copy操作,也会对oc对象进行copy操作。


二、__block修饰的变量的内存管理

__block的内存管理


三、__block修饰的变量和oc对象之间内存管理的比较
1.strong修饰的对象和____block修饰的变量

2.week修饰的对象和____block修饰的变量

总结:__block修饰的变量,只对其进行强引用,而对象是否进行强引用,取决于是被__weak修饰,若是,就是弱引用,否则就是强引用。

追加:__block的forwarding指针的作用:

网友评论