__block 変数に関するドキュメントを読み、 __ block を使用するケースについて考えていました。私には、次の 2 つの場合に必要なようです。
- ブロック内で変数を使用するときに読み書き可能としてマークするには
- ブロック内で自分自身を参照するときにリテイン サイクルを回避するには
表面的には、これら 2 つのことは関連していないように見えます。__block 変数が保持されないという事実は、保持サイクルを回避するという特定のユースケースで覚えておく必要があるトリックの多くであると考えています。
それらを保持してはならない、より重要なアーキテクチャ上の理由があるのでしょうか? 上記の2つの機能を混同しないように、これを示す他のキーワードがより明確になると思います.
アップデート -
これは ARC を使用しないコードであることに注意してください。__block 変数が実際には ARC に保持されていることがわかりました。