Block

174 阅读1分钟

局部变量

auto自动变量:离开作用域就销毁  值传递 捕获

static 指针传递 

全局变量 直接访问  不捕获







   在ARC环境下,编译器会根据情况自动将栈上的block复制到堆上,

1 作为函数返回值

2 将block 赋值给_strong的指针

3 block作为cocoa API中方法名含有usingBlock的方法参数时

4 GCD 对空间 自动进行copy 


只要block 在栈上,引用auto变量,是不会产生强引用

如果block被拷贝到堆上,

    会调用block内部的copy函数

    copy函数内部会调用_Block_object_assign函数 

   _Block_object_assign函数会根据auto的变量的修饰符(__strong __weak _unsafe_unretained)做出相应的操作,类似于retain(形成强引用、弱引用)


copy函数

dispose函数