2012-05-29 60 views

回答

1

cancelAllOperations不会立即取消当前正在执行的NSOperation,它只会将它发送取消消息(请参阅文档)。您需要定期检查操作是否已被取消。例如:

if (!self isCancelled) { 
    // continue executing 
} 

另外,您可以建立一个核心价值观察员监督了-cancel信号(例子here的)。

请注意,在“cancelAllOperations”之后调用“waitUntilAllOperationsAreFinished”是多余的。既然你先调用cancelAllOperations,它应该立即返回。

最后,我强烈建议如果您还没有阅读Concurrency Programming Guide。多线程是一种非常复杂但是非常宝贵的编程工具,它帮助我极大地理解了Objective-C实现的原理。

相关问题