MRC BlOCK ARC

 
 /*-------------------MRC环境中-------------------------*/
    //使用局部变量:a到block块中,为了在block中能够使用这个变量,将a拷贝放到常量区域
//    int a = 10;
   
    //如果访问局部对象,为了在block中能够使用这个对象,引用计数值加一
    //注意:如果使用__block修饰,计数值则不加一
//-----------block对全局变量的影响-----------
   
    //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
原文地址:https://www.cnblogs.com/yhj1787354782/p/4806342.html