iOS_block記憶體分析

來源:互聯網
上載者:User

標籤:

----------------------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記憶體分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.