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];
}