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];
        }];
  • 相关阅读:
    Salesforce PDF打印
    Salesforce Visualforce分页
    Salesforce 开发实践探索
    Salesforce 锁定记录
    Salesforce 通过代码实现权限共享
    Salesforce Aura开发 Component表单初解
    phpqrcode生成动态二维码简单实例
    PHP结合zyupload多功能图片上传实例
    PHP程序员的技术成长规划 第三阶段:高级阶段
    PHP程序员的技术成长规划 第二阶段:提高阶段
  • 原文地址:https://www.cnblogs.com/zhang-kiwi/p/5025076.html
Copyright © 2011-2022 走看看