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];
        }];
  • 相关阅读:
    Wannafly Camp 2020 Day 2C 纳新一百的石子游戏
    [CF653F] Paper task
    [CCPC2019 哈尔滨] L. LRU Algorithm
    [CCPC2019 哈尔滨] A. Artful Paintings
    [BZOJ4310] 跳蚤
    [BZOJ3277/BZOJ3473] 串
    bugku数字验证绕过正则
    sublime在搜索的时候排除js文件
    bugku逗号过滤注入
    SQL注入之逗号拦截绕过
  • 原文地址:https://www.cnblogs.com/zhang-kiwi/p/5025076.html
Copyright © 2011-2022 走看看