Ресурсы iOS по требованию из фреймворка или Cocoapod?
Начиная с iOS 9, в iOS появилась функция "Ресурсы по требованию" (ODR), позволяющая Apple размещать ресурсы, которые можно загружать по требованию, а не размещать их в комплекте приложений. Помечая ресурсы тегами ресурса, а затем используя NSResourceBundleRequest
Чтобы запросить ресурсы для данного тега (тегов), мы можем уменьшить размер нашего пакета приложений, оставляя редко используемые активы на устройстве до тех пор, пока они не потребуются.
К сожалению, я смог заставить его работать только с ресурсами, которые специально включены в цель приложения в XCode. Временами код и ресурсы включаются не в цель приложения, а в общую или внешнюю среду (например, библиотеку, распространяемую через Cocoapods, или общую среду, используемую для обмена кодом и ресурсами в приложениях iOS, tvOS, watchOS, macOS).). В идеале, поскольку эти фреймворки в конечном итоге встроены в цель вашего приложения, Xcode просто сможет извлечь ресурсы из встроенных фреймворков и пометить их для загрузки.
Хотя у этих целевых структур есть раздел "Теги ресурсов" их файла проекта, и мы все еще можем настраивать теги ресурсов в этих целях, во время выполнения запрос ресурса просто не выполняется с NSBundleOnDemandResourceInvalidTagError
, Панель "Диск" в Навигаторе отладки также не отображает раздел Ресурсы по требованию.
Я не могу найти какую-либо документацию, в которой конкретно говорится, что использование ODR возможно или невозможно при использовании внешних платформ. Кто-нибудь знает, возможно ли это, и если да, то как это может быть достигнуто?