Понимание NSBlockOperation

Я вхожу в NSBlockOperation и у меня есть несколько вопросов. В частности, документация для addExecutionBlock говорит:

обсуждение

Указанный блок не должен делать никаких предположений о его среде выполнения.

Вызов этого метода, когда получатель выполняет или уже завершил, вызывает NSInvalidArgumentException исключение, которое будет брошено.

Какую ситуацию выкинет NSInvalidArgumentException? Что на самом деле не означает "пока выполняется приемник"? Что может вызвать это?

2 ответа

Решение

Вы не можете использовать addExecutionBlock: добавить блок выполнения, когда операция выполняется или уже завершена. Это все, что это значит.

Объект блочной операции может иметь ноль или более блоков исполнения, связанных с ним. Когда начинается операция блока, все связанные с ней блоки выполнения передаются для одновременного выполнения. Предупреждение состоит в том, что после этой точки вы не можете добавить больше блоков выполнения к операции.

Вы можете создавать больше объектов блочных операций и добавлять к ним блоки исполнения. Каждая операция с блоком запускается отдельно от других, поэтому правило добавления дополнительных блоков вычисляется отдельно.

Как правило, вы создаете блочную операцию, добавляете в нее любые блоки исполнения, а затем ставите ее в очередь. Как только операция была поставлена ​​в очередь, она может начаться в любое время (в зависимости от готовности, которая зависит от зависимостей). Таким образом, лучше не пытаться добавлять блоки выполнения, когда они поставлены в очередь.

Другие вопросы по тегам