我正在阅读有关__block variables的文档,并考虑使用 __block 的情况。对我来说,似乎我在两种情况下需要它:
- 在块中使用时将变量标记为可读写
- 在块内引用 self 时避免保留循环
从表面上看,这两件事似乎没有关系。我认为 __block 变量没有被保留这一事实更多是我需要记住的一个技巧,用于避免保留循环的特定用例。
我想知道,为什么不能保留它们是否有更重要的架构原因?我认为其他一些关键字可能会更清楚地表明这一点,以免混淆上面列出的两个功能。
更新 -
我应该提到这是不使用 ARC 的代码。我现在看到 __block 变量实际上保留在 ARC 中。