block中用到self要特別注意記憶體洩露問題

2021-07-04 05:25:02 字數 378 閱讀 2948

self強引用會使引用計數器加1,如果在dismissviewcontroller時,如:

[self 

dismissviewcontrolleranimated

:no 

completion

:nil];

不呼叫dealloc方法,需要將self 轉為弱引用:

__weak 

typeof

(self

) selfvc =

self;

再用selfvc 執行接下來的操作。

此時如果在dealloc方法中列印日誌:

- (void)dealloc

之前被dismiss的控制器就會列印出來,這樣就不會引起記憶體洩露了。

Magento中用子類替換Block

step 1 建立乙個新的module step 2 編輯模組的config.xml配置檔案 code type xml 0.1.0 glamour glscatalog block adminhtml product edit tab related code 注意 和 標籤.告訴 magento...

self 在block中的記憶體管理

block對於其變數都會形成strong reference,對於self也會形成strong reference 而如果self本身對block也是 strong reference 的話,就會形成 strong reference 迴圈,造成記憶體洩露,為了防止這種情況發生,在block外部應該...

Block裡用self造成迴圈引用

weak typeof self weakself self 扯了這麼多,回到block的迴圈引用問題,由於我們很多行為會導致block的copy,而當block被copy時,會對block中用到的物件產生強引用 arc下 或者引用計數加一 non arc下 如果遇到這種情況 123 4567 89...