zoukankan      html  css  js  c++  java
  • iOS_block内存分析

    ----------------------MRC情况下Block内存分析----------------------------

    1.如果在block中使用全局变量,他为了持有这个变量,会将对应的对象加一

    2.使用__block,避免循环引用

    3.在block中使用局部变量的时候,会将变量复制一份存放到常量区(可以使用,但是不可以更改)   

    4.在MRC环境下:block中访问局部对象的时候,会将计数值加一
    5.在MRC环境下:__block的作用:(1)修饰局部对象的时候,不会被block加一
                                                 (2)使用__block修饰局部变量的时候,可以在block中更改值

    6.当Block访问全局变量的时候,为了让全局变量不销毁,将属性对应的对象reatin
    7.当Block访问方法的时候,为了保证方法的存在,将对应的对象retain
       

    ----------------------ARC情况下Block内存分析---------------------------

    1.在ARC情况下:__block的作用只有一个:修饰变量的时候,在block中可以修改

    2. 在ARC情况下解决循环引用的方式:__weak

    3.使用__weak,可以解决循环引用,但是不能访问当前类中属性

    4.如果需要改变则可以作如下操作:

        [button addBlockAction:^(UIButton *button) {
            //如果想访问当前类的属性,做如下操作
            __strong SecondViewController *strongThis = weakThis;
    //        _index = 30;
            //报错
    //        weakThis->_index = 30;
            //解决方式
            strongThis -> _index = 30;
            
            [strongThis test];
            [strongThis.navigationController popViewControllerAnimated:YES];
        }];
  • 相关阅读:
    AI.框架理论.语义网.语言间距.孤单
    图像局部显著性—点特征(Fast)
    图像的全局特征--HOG特征、DPM特征
    图像局部显著性—点特征(FREAK)
    iis7服务器隐藏index.php
    php命名空间
    thinkphp5.0 composer安装phpmailer
    php输入流简单小例子
    js、php判断手机PC
    thinkphp5.0 空模块、空控制器、空方法
  • 原文地址:https://www.cnblogs.com/zhang-kiwi/p/5025076.html
Copyright © 2011-2022 走看看