Загрузка прогрессивного ресурса iOS (или пакета активов) после запуска приложения - PullRequest
3 голосов
/ 15 февраля 2012

Я хочу добавить более постепенную / прогрессивную загрузку ресурсов в мое приложение для iOS, что-то вроде ZeptoLab для Cut the Rope. Я хочу сократить время, затрачиваемое пользователем на статический файл Default.png во время загрузки приложения, и, надеюсь, быстрее перейти на экран-заставку, где я могу показать индикатор выполнения (я потратил некоторое время на разработку во Flash, где «preloaders» это норма).

Я понял, что мне, возможно, придется использовать пакеты активов для этого. Я хочу сохранить все файлы в Xcode, а не загружать их из другого места.

Итак, я видел примеры загрузки пакета ресурсов -

NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"MyBundle"  ofType:@"bundle"];
NSString *imageName = [myBundle pathForResource:@"someImage" ofType:@"png"];

Но я хотел найти примеры того, как:

  • запустите это асинхронно, я думаю, используя другой поток
  • отслеживать, сколько загружено в этот пакет
  • знаю, сколько содержится в этом пакете, поэтому я могу рассчитать процент загруженного пакета.

Я также хотел знать - меняет ли использование комплектов ресурсов, как / когда мои файлы будут загружаться моим приложением iOS?

Или правильный подход - не добавлять файлы в фазы копирования / сборки в настройках моего проекта Xcode?

Спасибо всем!

1 Ответ

0 голосов
/ 12 августа 2013

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

вы делаетене нужно использовать отдельные пакеты для достижения этой цели - хотя их использование также не причиняет вреда (например, для разделения отдельных ресурсов, которые вы хотите загружать динамически)

...