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