0

ここに画像の説明を入力してください以下の方法でNSOperationQueueを使用してプロセスを作成しました。

queue = [[NSOperationQueue alloc]init];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self 
                                                                           selector:@selector(loadDataWithOperation)object:nil];
[queue addOperation:operation];
[operation release];

このloadDataWithOperation方法では、無限の数を印刷するためのコードを記述しました。

これで、cancelAppOperationsを呼び出して実行を停止しました。また、このように一時停止値をYESに設定しようとしました。

[queue setSuspended:YES]

プロセスはまだ実行中ですが、「停止」ボタンを使用して停止メソッドを呼び出しています。同じクラスで呼び出しています。

どうすれば止められますか?

4

2 に答える 2

1

実行を開始する前に、キュー内のすべての操作にキャンセル メッセージを送信できますが、操作が既に実行されている場合は、キャンセル メッセージを処理する必要があります。

于 2012-09-11T14:11:34.180 に答える
0

ここで、キューのサスペンド [queue setSuspended:YES] が正常に機能しているため、For ループを停止する条件を確認します。

if(![queue isSuspended]) 
{
        NSLog(@"elements are :%d",i);
}
else
{
    break; 
}

これらのコード行を「loadDataWithOperation」メソッドに配置しました

于 2012-09-13T10:38:38.283 に答える