1. 程式人生 > >iOS開發運用block時何時會導致記憶體洩露問題???

iOS開發運用block時何時會導致記憶體洩露問題???

為什麼block容易出現記憶體洩露,根本原因是存在物件間的迴圈引用問題(物件a強引用物件b,物件b強引用物件a)。接下來看看以下幾種情況。
1.
這裡寫圖片描述
結論:會出現記憶體洩露。這也最常見的block迴圈引用。
2.
這裡寫圖片描述
結論:會出現記憶體洩露。
3.
這裡寫圖片描述
結論:不會出現記憶體洩露。
分析:
注意此處的block 是區域性的,不是全域性屬性。self對此block不存在強引用,所以不存在迴圈引用。
4.
這裡寫圖片描述
結論:會出現記憶體洩露。
分析:這種情況可以和第3種情況做對比。這裡把block做為了全域性變數,故會出現迴圈引用。
5.
這裡寫圖片描述
結論:不會出現記憶體洩露。
分析:類方法,沒有構成物件相互引用。

總結:分析block是否存在記憶體洩露,關鍵還是分析是否存在物件間的相互強引用。
做專案有一點點心得體會,請大家多多請教。