Tag: 所有权

__weak和__block引用有什么区别?

我正在阅读Xcode的文档,这里是让我感到困惑的东西: __block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; 以下内容是从文档复制的: 一个块形成了它捕获的variables的强有力的参考。 如果你在一个块中使用self ,那么这个块就形成了一个强烈的self引用,所以如果self也有一个强烈的块引用(它通常会这样做),就会产生一个强大的引用循环。 为了避免这个循环,你需要在块的外部创build一个弱的(或__block )引用,就像上面的例子。 我不明白“弱(或__block )”是什么意思? 是 __block typeof(self) tmpSelf = self; 和 __weak typeof(self) tmpSelf = self; 这里完全一样吗? 我在文件中发现了另一篇文章: 注意:在垃圾回收环境中,如果将__weak和__block修饰符同时应用于某个variables,则该块将不会确保它保持活动状态。 所以,我完全不解。