/*-------------------MRC环境中-------------------------*/
//使用局部变量:a到block块中,为了在block中能够使用这个变量,将a拷贝放到常量区域
// int a = 10;
//如果访问局部对象,为了在block中能够使用这个对象,引用计数值加一
// int a = 10;
//如果访问局部对象,为了在block中能够使用这个对象,引用计数值加一
//注意:如果使用__block修饰,计数值则不加一
//-----------block对全局变量的影响-----------
//block在访问全局变量、方法的时候,会将这个变量对应的对象计数值加一
//block -> self -> self.view -> button -> block
//解决方式:使用__block修饰self
//block在访问全局变量、方法的时候,会将这个变量对应的对象计数值加一
//block -> self -> self.view -> button -> block
//解决方式:使用__block修饰self
//总结:在MRC环境中__block的作用:(1)可以在block中修改变量值 (2)block内部访问属性的时候,可以使用__block修饰,避免计数值加一(解决循环引用问题)
//---------------在ARC环境中---------------
//__block:可以让局部变量在block中修改数据
//------------解决循环引用------------
//在ARC环境中的解决方法:
__weak 可以解决在block代码块中调用方法产生的循环引用,但是不能解决在block代码块中使用全剧变量产生的循环引用
__strong 可以解决在block代码块中调用方法产生的循环引用,也可以解决在block代码块中使用全剧变量产生的循环引用
www.iphonetrain.com
www.iphonetrain.com