BFTask has been good to me but I have one complaint: I've yet to see a working example of how you ought to cancel a task. The entirety of the documentation on the subject is found on their GitHub page with a single lowly section that includes everything but the part I care about: how to cancel the task.
// Somewhere else.
MYCancellationToken *cancellationToken = [[MYCancellationToken alloc] init];
[obj doSomethingComplicatedAsync:cancellationToken];
// When you get bored...
[cancellationToken cancel];
Their code snippet is followed by:
Note: The cancellation token implementation should be thread-safe.
I am wondering the following:
- Is there a good reason that they may not have provided the
cancelmethod on theBFTaskinterface itself? They have a property representing whether the task was canceled but no means to cancel it. - Is there a good reason that they would not include a
cancellationToken(s)property on theBFTaskitself? - Is the implementation of
cancelstrongly coupled to the task itself? Or is a general implementation possible as in the case ofcancelAllOperationsof anNSOperationQueue?