Ответ 1
Почти во всех случаях вызова cancelAllOperations
будет достаточно. Единственный раз, когда вам нужно позвонить waitUntilAllOperationsAreFinished
, - это если вам действительно нужно убедиться, что эти операции выполняются, прежде чем двигаться дальше.
Например, вы можете сделать это, если операторы получают доступ к некоторой разделяемой памяти, и если вы не ждете, тогда вы в конечном итоге получите два потока, которые будут записываться в эту общую память. Однако я не могу придумать какой-либо разумный дизайн, который защитил бы общую память, вызвав задержку блокировки в методе dealloc
. Доступны гораздо лучшие механизмы синхронизации.
Таким образом, короткий ответ таков: вам не нужно ждать завершения всех операций, если нет причин, по которым ваше приложение нуждается в этом.