NSOperation
キュー内で使用するカスタム サブクラスをいくつか実装しました。
どこに設定する必要がありますか (または設定でき@autoreleasepool
ますか? )
カスタム操作のmain
メソッド内で?
または、操作をキュー インスタンスに追加するステートメントのあたりでしょうか。
編集:
ブロックを使用して操作を追加するとどうなりますか? @autoreleasepool
ブロックにも入る必要がありますか?
関連性がある場合は、ARCを使用しています。
NSOperation
キュー内で使用するカスタム サブクラスをいくつか実装しました。
どこに設定する必要がありますか (または設定でき@autoreleasepool
ますか? )
カスタム操作のmain
メソッド内で?
または、操作をキュー インスタンスに追加するステートメントのあたりでしょうか。
編集:
ブロックを使用して操作を追加するとどうなりますか? @autoreleasepool
ブロックにも入る必要がありますか?
関連性がある場合は、ARCを使用しています。
自動解放プールを使用する主な理由は、一時的な不要なオブジェクトの巨大な集約を防ぐためです。たとえば、操作で一連の画像を開き、それらの一部を抽出して(NSDataオブジェクトに保存)、最後のステップとして新しい部分を画像に変換するとします。
その場合は、開いている部分と抽出している部分を自動解放プールに入れ(NSDataオブジェクトが適切に保持されていることを確認します)、それを終了してから、新しいイメージを作成して保存します。そうすれば、開かれたすべての画像が確実にリリースされます。
操作で自動解放プールを一般的に使用する理由はありません。操作がキューを終了すると、そのときまたはその直後にキューが終了するのと同じようになります。
実際、ARCを使用すると、コンパイラーはオブジェクトを自動解放プールから引き出し、保持し、不要なときに直接解放することがあります。
あなたがプールの差し迫った必要性を知っていない限り、私はそれを使いません。ここで、「start」メソッドを使用して同時NSOperationを使用する場合、それは別の話であり、プールを使用して実行ループの周りにコードをラップする必要があります。