Обратите внимание, что длительная операция при запуске должна быть исключена:
- Плохой пользовательский опыт (задержка и плохое поведение)
- Watchdog в iOS может убить ваше приложение, как будто оно застряло.
Выполните копирование во вторичном потоке (или в операции ... или в другом месте, где используется другой путь выполнения).
Другая проблема возникнет, если вам понадобятся данные для заполнения вашего пользовательского интерфейса: в этом случае:
- Отключить элементы пользовательского интерфейса
- Запустить асинхронную / потоковую операцию
- При завершении обратного вызова копирования (через уведомление, протокол ... или иным способом)
уведомить интерфейс пользовательского интерфейса, что он может начать выборку данных.
Например, мы копируем ZIP-файл и распаковываем его, но это занимает некоторое время, поэтому нам пришлось поместить его в процедуру таймера, которая будет запускать пользовательский интерфейс по завершении.
Если вам нужен пример, дайте мне знать.
PS:
Копирование с использованием ZIP-файла более эффективно, как:
- Только вызов файловой системы
- Гораздо меньше байтов для копирования
Плохая новость: вы должны использовать процедуру распаковки zip-файла, но вы можете найти их в Интернете.
Распаковка Zip-файлов должна быть более эффективной, поскольку эти вызовы пишутся на прямом C, а не в Какао со всеми накладными расходами.