1. 程式人生 > >Block記憶體管理例項分析

Block記憶體管理例項分析

說道block大家都不陌生,記憶體管理問題也是開發者最頭疼的問題,網上很多講block的部落格,但大都是理論性多點,今天結合一些例項來講解下。

儲存域

首先和大家聊聊block的儲存域,根據block在記憶體中的位置,block被分為三種類型:

  • NSGlobalBlock
  • NSStackBlock
  • NSMallocBlock

從字面意思上大家也可以看出來
1、NSGlobalBlock是位於全域性區的block,它是設定在程式的資料區域(.data區)中。
2、NSStackBlock是位於棧區,超出變數作用域,棧上的Block以及 __block變數都被銷燬。
3、NSMallocBlock

是位於堆區,在變數作用域結束時不受影響。

注意:在 ARC 開啟的情況下,將只會有 NSConcreteGlobalBlock 和 NSConcreteMallocBlock 型別的 block。

說了這麼多理論的東西,有些人可能很懵,覺得講這些有什麼用呢,我平時使用block並沒有什麼問題啊,好了,接下來我們先來個