當block中用到self時,需謹慎!

讓人蛋疼的block!

block對於其變量都會形成strong reference,對於self也會形成strong reference ,而如果self本身對block也是 strong reference 的話,就會形成 strong reference 循環,造成內存泄露,爲了防止這種情況發生,在block外部應該創建一個week(__block) reference。


所以在block內如果有self的話,一般都會在block外面加一句_block typeof(self)bself = self;

__block typeof(self) bself = self; 

[self methodThatTakesABlock:^ { 

[bself doSomething]; 
}

一定要防止在block中用到self時把self對象retain, 造成內存泄露。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章