据我所知,当我发送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 ,因为状态值已准备就绪。最后,我的代码是: