我正在阅读 Xcode 的文档,这让我感到困惑:
__block typeof(self) tmpSelf = self;
[self methodThatTakesABlock:^ {
[tmpSelf doSomething];
}];
以下是从文档中复制的:
块形成对其捕获的变量的强引用。如果
self
在块内使用,则该块形成对 的强引用self
,因此如果self
还具有对该块的强引用(通常会这样做),则会产生强引用循环。为避免循环,您需要__block
在块外创建对 self 的弱(或 )引用,如上例所示。
我不明白“弱(或__block
)”是什么意思?
是
__block typeof(self) tmpSelf = self;
和
__weak typeof(self) tmpSelf = self;
这里一模一样?</p>
我在文档中找到了另一篇文章:
注意:在垃圾收集环境中,如果您同时将
__weak
和__block
修饰符应用于变量,则该块将无法确保它保持活动状态。
所以,我完全感到困惑。