Прежде всего, поскольку ваш вопрос помечен iPhone, вы можете включать только код в свои пакеты на iPhone. Таким образом, вы можете использовать пакеты только для упаковки изображений и звуковых файлов и других статических данных.
Когда вы создаете новый проект в XCode, есть возможность сделать цель пакетом (в рамках Framework & Library), но комплект активов - это просто каталог с суффиксом .bundle. Я генерировать мину с этой небольшой скрипт:
#!/bin/bash
echo "Building assets bundle."
if [ -d ./MyAssets.bundle ]; then
rm ./MyAssets.bundle/*
else
mkdir ./MyAssets.bundle
fi
find ./assets -type f -print0 | xargs -0 -J% cp % ./MyAssets.bundle
(я не Баш хакер, так что это может быть улучшено бесчисленными способами Предложения приветствуются.!)
Это занимает иерархию папок и разглаживает ее (Я ненавижу иерархии) в один каталог, который называется MyAssets.bundle. Я запускаю этот сценарий из отдельной фазы сборки, когда в проектах, которые импортируют пакет, так что изменения автоматически отслеживаются.
Если вы хотите узнать, как создавать фреймворки, это немного сложнее (вы должны следовать определенным соглашениям и включать информацию в plists), но для пакетов iPhone это почти все, что вам нужно знать и делать.
Можно ли загрузить XIb файлы из этого набора, потому что я не нашел способ сделать это ? – vakio
Вы можете использовать соответствующий пакет как в [[NSBundle mainBundle] loadNibNamed: @ "MyViewController" владелец: self options: nil] и [aViewController initWithNibName: @ "MyViewController" bundle: nil] (nil просто означает основной комплект) – Felixyz
Но вы не можете иметь внешний комплект, верно? Как NSBundle * bundle = someFunctionToLoadExternalBundle(); [bundle loadNibNamed: @ "name" owner: self options: nil]; Я googled и только обнаружил, что это невозможно. Просто проверяйте, открыли ли вы чудесный способ сделать это или что-то еще, но я знаю, что это, вероятно, никогда не произойдет. – vakio