美文网首页
十四、Block之(六)Block的__block的内存管理

十四、Block之(六)Block的__block的内存管理

作者: yqc5521 | 来源:发表于2019-04-20 11:10 被阅读0次

一、强指针引用的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指针的作用

相关文章

网友评论

      本文标题:十四、Block之(六)Block的__block的内存管理

      本文链接:https://www.haomeiwen.com/subject/utukgqtx.html