2012-05-29 57 views

回答

1

cancelAllOperations不會立即取消當前正在執行的NSOperation,它只會將它發送取消消息(請參閱文檔)。您需要定期檢查操作是否已被取消。例如:

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

另外,您可以建立一個核心價值觀察員監督了-cancel信號(例子here的)。

請注意,在「cancelAllOperations」之後調用「waitUntilAllOperationsAreFinished」是多餘的。既然你先調用cancelAllOperations,它應該立即返回。

最後,我強烈建議如果您還沒有閱讀Concurrency Programming Guide。多線程是一種非常複雜但是非常寶貴的編程工具,它幫助我極大地理解了Objective-C實現的原理。

相關問題