Отмена с операциями и очередями операций не происходит автоматически. Когда вы отменяете операцию, она просто устанавливает флаг, указывающий, что она была отменена. Пользовательский код операции должен проверить этот флаг и прекратить свою работу.
В общем случае нереально остановить поток (или остановить работу, выполняемую этим потоком) без взаимодействия кода, выполняющегося в этом потоке. Это оставило бы состояние программы в поврежденной конфигурации (например, мьютексы постоянно заблокированы).
К сожалению, FileManager
не предоставляет способ отменить свои операции. Вам придется использовать API более низкого уровня, чтобы включить отмену. Функция copyfile()
, вероятно, лучшая. Документы больше не находятся в сети, ни в документации XCode, но вы можете использовать команду man copyfile
, чтобы увидеть их.