3

我正在进入NSBlockOperation,我有一些问题。值得注意的是,文档addExecutionBlock

讨论

指定的块不应对其执行环境做出任何假设。

在接收器正在执行或已经完成时调用此方法NSInvalidArgumentException会引发异常。

会抛出什么样的情况NSInvalidArgumentException?“当接收器正在执行时”到底是什么意思?什么会导致这种情况?

4

2 回答 2

3

块操作对象可以有零个或多个与其关联的执行块。当块操作开始时,其所有关联的执行块都被提交并发执行。警告是您不能在此之后向操作添加更多执行块。

您可以创建更多块操作对象并向这些对象添加执行块。每个块操作都是独立启动的,因此添加更多执行块的规则是单独评估的。

通常,您会创建一个块操作,向其中添加您想要的任何执行块,然后将操作排队到操作队列中。一旦操作排队,它可能随时开始(取决于准备情况,这取决于依赖关系)。因此,最好不要在排队后尝试添加执行块。

于 2014-07-26T02:11:00.420 回答
3

您不能在操作正在运行或已经完成时addExecutionBlock:添加执行块。这就是它的全部含义。

于 2014-07-26T00:00:21.143 回答