码迷,mamicode.com
首页 > 移动开发 > 详细

iOS_block内存分析

时间:2015-12-07 08:35:49      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

----------------------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];
    }];

 

iOS_block内存分析

标签:

原文地址:http://www.cnblogs.com/zhang-kiwi/p/5025076.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!