Processor
長い計算を実行するいくつかのメソッドを含むオブジェクト( )があります。NSOperation
これらのメソッドをメインスレッドとサブクラスの両方で使用したいと思います。
サブクラスコード内NSOperation
で繰り返し呼び出すisCancelled
ので、キャンセルはかなり敏感です。ただし、操作がこれらの長いProcessor
メソッドの1つを呼び出すと、そのメソッドが戻るまでキャンセルに応答できません。
操作の有無にかかわらず使用できるようにメソッドを作成する良い方法はありますか?operation
CPUを集中的に使用するメソッドに引数を追加して、次のProcessor
ように記述することを検討しています。
- (void)calculateWithOperation:(NSOperation *)operation {
do {
if (operation != nil && [operation isCancelled]) {
return;
}
// Do some more calculation...
} while (! finished);
}
// For convenient main thread execution.
- (void)calculate {
[self calculateWithOperation:nil];
}
他の誰かが以前にこの問題に遭遇したことがありますか?もっと良い方法はありますか?