我们在我们的应用程序中使用 AFNetworking ( https://github.com/AFNetworking/AFNetworking ) 和 NSOperationStack ( https://github.com/nicklockwood/NSOperationStack ) 来设置依赖关系,以便最后一个操作优先于队列中的其余操作 (堆栈行为)。当调用 AFURLConnectionOperation 的 'start' 方法时,我遇到了一个问题,但是由于依赖关系,操作的 'isReady' 方法返回 NO。这使得“开始”立即退出。在第一次尝试开始操作之后,'start' 方法永远不会被再次调用,因此操作永远不会达到 isFinished 状态,永远不会从队列中删除,最终像这样的操作会阻塞队列。我将不胜感激有关此事的任何想法。谢谢!
更多信息:没有任何操作被取消,我在队列中看不到任何依赖圈。我们在现有 operationQueue 上使用 setLIFODependendenciesForOperation 而不更改 AFNetworking 代码:[self.operationQueue setLIFODependendenciesForOperation:operation];
更新:现在,更多地考虑一下,当 NSOperationQueue 决定操作准备好时,是否有可能在某一时刻有零依赖项并让 isReady 返回 YES,但是到那时, start() 被调用,依赖项的数量变为 1或者更多。