__weak typeof(self) weakSelf = self;《笔记篇》

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

}

你可能感兴趣的:(__weak typeof(self) weakSelf = self;《笔记篇》)