据我所知,当我发送isFinished KVO通知并且isFinished = YES时,NSOperation将从其NSOperationQueue中删除,并且当我发送isCancelled KVO通知时,它不会从其NSOperationQueue中删除 . 所以在我的取消功能:

  • 当操作取消之前,只需返回 .

  • 操作完成后,只需返回即可 .

  • 当NSOperation正在执行时,其队列之前发送了isExecuting KVO通知,因此我只发送isCancelled和isFinished KVO通知,然后其队列将其删除 .

  • 当NSOperation isReady时,它的队列还没有发送isExecuting KVO通知,所以我发送了isExecuting KVO通知,但是我在控制台中遇到了一些错误:去了isFinished = YES而没有被它所在的队列启动 .

我的问题是:当我取消状态准备好的操作时,我该怎么办?我希望它被队列删除 .

顺便说一句,我有一个成员变量来保存操作的状态,我希望取消功能不影响它的值,所以当取消一个状态就绪的操作时,我只是发送isExecuting KVO通知但是isExecuting = NO,因为状态值准备就绪 . 最后,我的代码是:

enter image description here

enter image description here