一、强指针引用的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操作。
Block引用oc的对象的代码Block引用oc的对象的内部实现
1.1__main_block_desc_0结构体包含copy和dispose的函数,会对oc对象进行copy操作,进行强引用,和dipose操作。
__main_block_desc_0结构体
2.block引用week修饰的OC对象,对其进行弱引用,block的copy操作,也会对oc对象进行copy操作。
Block引用week修饰的oc对象的代码Block引用week修饰的oc对象的内部实现
二、__block修饰的变量的内存管理
Block引用__block修饰的局部变量的内部实现__block的内存管理
__block修饰的变量的copy操作__block修饰的变量的release操作
三、__block修饰的变量和oc对象之间内存管理的比较
1.strong修饰的对象和____block修饰的变量
strong修饰的对象和____block修饰的变量2.week修饰的对象和____block修饰的变量
week修饰的对象和____block修饰的变量总结:__block修饰的变量,只对其进行强引用,而对象是否进行强引用,取决于是被__weak修饰,若是,就是弱引用,否则就是强引用。
block内存管理总结追加:__block的forwarding指针的作用:
__block的forwarding指针的作用
网友评论