シリアル キューにディスパッチされるいくつかのタスクと、特にグループにディスパッチされるいくつかのタスクがあります。これらのタスクがディスパッチされた後、それらが既に実行されている場合でも、それらをキャンセルするオプションをユーザーに提供したいと思います。
キューに入れられたタスクをキャンセルする方法が見つからないので、quitRender などと呼ばれるブール値のフラグを作成し、このフラグが true かどうかをテストしてレンダリングを終了できると想像しましたが、これは機能せず、私の説明は次のとおりです。タスクが起動されるとフラグ quitRender は NO であるため、タスクはブロックで実行され、ブロックは開始時の値を凍結するため、ブロックは変更を認識せず、決して終了しません。
次に、別のアプローチを試しました。次のようなメソッドを作成します
- (BOOL) cancelRender {
return quitRender;
}
それは実行され、変数の現在の値をブロックに送信しますが、どうやらブロックはquitRenderに対して引き続きNOと見なします。
何か不足していますか?これを機能させるにはどうすればよいですか?
ありがとう。