了解NSBlockOperation

时间:2014-07-25 23:58:02

标签: ios nsoperation nsoperationqueue nsexception nsblockoperation

我进入NSBlockOperation并且我有一些问题。 值得注意的是,addExecutionBlock的{​​{3}}表示:

  

讨论

     

指定的块不应该做任何假设   它的执行环境。

     

在接收器正在执行或已经执行时调用此方法   完成导致抛出NSInvalidArgumentException异常。

NSInvalidArgumentException将会出现什么样的情况? “当接收器正在执行时”真正没有意味着什么?是什么导致这个?

2 个答案:

答案 0 :(得分:3)

在操作正在运行或已完成时,您无法使用addExecutionBlock:添加执行块。这就是它的意思。

答案 1 :(得分:3)

块操作对象可以具有与之关联的零个或多个执行块。当块操作开始时,它的所有相关执行块都被提交以便并发执行。警告是在此之后您无法为操作添加更多执行块。

您可以创建更多块操作对象并向其添加执行块。每个块操作都是与其他块操作分开启动的,因此有关添加更多执行块的规则将单独进行评估。

通常,您将创建一个块操作,向其中添加所需的任何执行块,然后将操作排入操作队列。一旦操作排队,它可能随时开始(取决于准备就绪,这取决于依赖性)。因此,最好不要在排队后添加执行块。