iOS高级进阶

__block的内存管理

2019-10-15  本文已影响0人  南城同學
  __block int age = 10; 
  Block block1 = ^{
         age = 20;
   };

copyblock时,__block变量的变化:

__block变量为什么有一个指向自己的指针*__forwarding ?

__block修饰对象类型

  1. 会调用__block变量内部的copy函数;
  2. copy函数内部会调用_Block_object_assign函数;
  3. _Block_object_assign函数会根据所指向对象的修饰符(__strong__weak__unsafe_unretained)做出相应的操作,形成强引用(retain)或者弱引用(注意:这里仅限于ARC时会retain,MRC时不会retain,即:MRC环境下,始终是弱引用)。
上一篇 下一篇

猜你喜欢

热点阅读