block是一段代码块,这段代码可以在任何时候被执行
定义block的时候block会把局部变量以const的方式复制一份,存放在block所在的内存中,所以block内部不允许修改外部变量值。
如果要修改,需要在block外部,使用__block 修饰局部变量,之后操作局部变量就是在堆区中。
而静态变量和全局变量,无论加不加__block 都会直接引用变量地址,也就意味着可以直接修改变量的值
而全局变量在block中可以直接修改
1、默认block的生命周期是全局的
2、如果block被strong或者copy修饰,并且里面引用外部变量,block在堆里面
3、如果block被weak或者assgin修饰,并且里面引用外部变量,block在栈里面,会出现坏内存错误
太困了 明天写吧。。。