2015-03-01 2 views
19
класса

Совместное использование IOS приложения и расширения приложенияSharing код между оригинальным IOS App и App расширения

Я хочу использовать пользовательский класс как в мое приложение и приложение расширения. Если у меня просто есть класс в основной папке приложения, расширение не забирает его. Я попытался сделать его копию и поместить в папку расширения, но я, конечно, получаю ошибку invalid redeclaration of [my class]. Какое лучшее решение для этого? Это всего лишь один класс, а не несколько ресурсов.

ответ

31

Ничего не следует копировать. Просто добавьте файлы, необходимые для компиляции источников для расширения:

enter image description here

+1

Спасибо! Это выглядит великолепно! Как это соотносится с созданием Framework? –

+2

@RubenMartinezJr. Создание структуры не будет создавать ваш класс для каждой цели отдельно. но сделает это один раз и свяжется с каждой целью. –

+0

@RubenMartinezJr. Никоим образом не. Вы просто разделите код между приложением и расширением. Они будут составляться отдельно. Например, вы можете использовать #ifdef SOME_EXTENSION_FLAG ... #endif для отключения некоторых частей кода во время компиляции для приложения или для расширения. – Avt

13

Просто убедитесь, что файлы, которые вы хотите поделиться получить галочку в раздел целевого членства.

Выберите файл, откройте правую панель, расположенную с правой стороны, и отметьте галочкой.

enter image description here

+1

Просто для того, чтобы дать немного больше информации, сделать это таким образом также автоматически добавляет класс для 'Compile Sources' в' Build Phases'. – Burak

+0

вот что мне не хватало, это действительно просто. –

1

Встроенные рамки являются отличным способом для повторного использования кода между приложением и расширения. Перемещение некоторых из кода во встроенные фреймворки предоставит нам отличную возможность написать некоторые модульные тесты вокруг него.

См раздел Использование встроенного Framework для совместного использования кода https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW1