BFTaskは私にとっては良かったのですが、1 つ不満がcancelあります。タスクをどのように行うべきかを示す実際の例をまだ見たことがありません。この件に関するドキュメント全体は、彼らの GitHub ページにあり、私が気にかけている部分以外のすべてを含む単一の低レベルのセクションがあります:タスクをキャンセルする方法.
// Somewhere else.
MYCancellationToken *cancellationToken = [[MYCancellationToken alloc] init];
[obj doSomethingComplicatedAsync:cancellationToken];
// When you get bored...
[cancellationToken cancel];
彼らのコード スニペットの後には、次のものが続きます。
注: キャンセル トークンの実装は、スレッドセーフである必要があります。
私は次のことを疑問に思っています:
- インターフェイス自体で
cancelメソッドを提供していない可能性がある正当な理由はありますか?BFTaskタスクがキャンセルされたかどうかを表すプロパティがありますが、キャンセルする手段はありません。 - それ自体に
cancellationToken(s)プロパティを含めない正当な理由はありますか?BFTask - の実装は
cancel、タスク自体に強く結合されていますか? または、の場合のように一般的な実装は可能cancelAllOperationsですNSOperationQueueか?