我进入NSBlockOperation
并且我有一些问题。
值得注意的是,addExecutionBlock
的{{3}}表示:
讨论
指定的块不应该做任何假设 它的执行环境。
在接收器正在执行或已经执行时调用此方法 完成导致抛出
NSInvalidArgumentException
异常。
NSInvalidArgumentException
将会出现什么样的情况? “当接收器正在执行时”真正没有意味着什么?是什么导致这个?
答案 0 :(得分:3)
在操作正在运行或已完成时,您无法使用addExecutionBlock:
添加执行块。这就是它的意思。
答案 1 :(得分:3)
块操作对象可以具有与之关联的零个或多个执行块。当块操作开始时,它的所有相关执行块都被提交以便并发执行。警告是在此之后您无法为操作添加更多执行块。
您可以创建更多块操作对象并向其添加执行块。每个块操作都是与其他块操作分开启动的,因此有关添加更多执行块的规则将单独进行评估。
通常,您将创建一个块操作,向其中添加所需的任何执行块,然后将操作排入操作队列。一旦操作排队,它可能随时开始(取决于准备就绪,这取决于依赖性)。因此,最好不要在排队后添加执行块。