В вашем проекте создайте оба приложения, используя разные цели.
В приложении A> Цель> Фазы сборки:
- Добавить приложение B к
Target Dependancies
- Добавьте продукт из приложения B в фазу
Copy Bundle Resources
.
Теперь, когда вы создаете приложение A, Xcode создаст приложение B и скопирует готовое приложение B в папку Resources
пакета приложения A.
Вы не объясняете почему вы хотите это сделать, поэтому вот несколько идей, с чего можно начать ...
Вариант А:
Используйте класс NSBundle
, чтобы найти встроенное приложение B и запустить его так, как считаете нужным (напрямую, используя launchd
и т. Д.).
Если вы не хотите, чтобы приложение B отображалось в док-станции или было в строке меню, вам нужно установить LSUIPresentationMode
в Info.plist
приложения или программно настроить свойство activationPolicy
приложения.
Вариант B:
Рассмотрите возможность создания службы XPC. Службы XPC - это специальный встроенный исполняемый файл, который macOS запускает для вас всякий раз, когда вам это нужно, и устанавливает для вас соединение XPC, чтобы вы могли с ним общаться и выполнять работу.
См. Создание служб XPC
В XPC также есть средства, позволяющие безликому (не относящемуся к делу) вспомогательному процессу иметь пользовательский интерфейс, который появляется в вашем приложении. (Именно так работает Safari; каждая страница обрабатывается отдельным вспомогательным процессом, использующим XPC для управления страницей и представления ее в окне Safari.)