次のコードを調べて、ARC でコンパイルされたと仮定します。
- (無効) フー { NSOperationQueue *oq = [[NSOperationQueue alloc] init]; [oq addOperationWithBlock:^{ // ここで長時間実行オペレーションがあると仮定します。 }]; }
操作キューはローカル変数として宣言されていますが、実行中の操作がある限り、その有効期間はメソッドのスコープを超えて続きます。
これはどのように達成されますか?
アップデート:
Rob Mayoff のよく考え抜かれたコメントには感謝していますが、私の質問が正しくなかったと思います。NSOperationQueue に関する具体的な質問ではなく、ARC でのオブジェクトの有効期間に関する一般的な質問です。具体的には、私の質問はこれです:
ARC の下で、オブジェクトはどのようにして自身のライフタイムの管理に参加できるのでしょうか?
私は非常に長い間プログラマーをしており、そのようなことの落とし穴をよく知っています。私は、これが良いアイデアなのか悪いアイデアなのかについて説教されるつもりはありません。一般的にはダメだと思います。むしろ、私の質問は学術的なものです。それが良いアイデアか悪いアイデアかは関係ありませんが、ARC でこれを行う方法と、そのための具体的な構文は何ですか?