block對(duì)于其變量都會(huì)形成strong reference,對(duì)于self也會(huì)形成strong reference ,而如果self本身對(duì)block也是 strong reference 的話,就會(huì)形成 strong reference 循環(huán),造成內(nèi)存泄露,為了防止這種情況發(fā)生,在block外部應(yīng)該創(chuàng)建一個(gè)week(__block) reference。
所以在block內(nèi)如果有self的話,一般都會(huì)在block外面加一句_block typeof(self)bself = self;
__block typeof(self) bself = self;
[self methodThatTakesABlock:^ {
[bself doSomething];
}