Это всего лишь гипотеза, но поскольку copyItemAtPath: toPath: error определено так, что "Файл, указанный в srcPath, должен существовать, в то время как dstPath не должен существовать до операции." , возможно, сценарийгде dstPath уже существует, не считается «ошибкой» и поэтому не вызывает делегата.
т.е., возможно, «Это не ошибка, если вы делаете то, что мы сказали вам не делать».
Вы всегда можете выполнить проверку и удалить ее самостоятельно:
NSFileManager* fileManager = [NSFileManager defaultManager];
// Delete the file if it already exists.
if ([fileManager fileExistsAtPath: destination])
if (![fileManager removeItemAtPath: destination error: error])
return NO;
return [fileManager copyItemAtPath: source toPath: destination error: error];