Должны ли фреймворки быть помещены в / Library / Frameworks или в пакет приложений, если несколько приложений помещаются в один пакет - PullRequest
3 голосов
/ 14 июля 2009

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

Я планирую поместить исполняемые файлы для демонов launchd в комплект .app для графического интерфейса.

В этих приложениях используются 2 (оба довольно небольших) фреймворка, которые я создал.

Лучше ли поместить эти фреймворки в / Library / Frameworks (и таким образом сохранить несколько приложений, загружающих один и тот же код) или оставить их в комплекте приложений (что делает приложение автономным, за исключением списков для запуска)

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

Итог: я бы выбрал автономный, если / пока у вас нет убедительных доказательств того, что установка каркасов в /Library/Frameworks/ предложит заметное улучшение для вашего конкретного сценария. Проверьте эффективность выполнения этого в обоих направлениях, но я предпочитаю для начала сгруппировать фреймворки с приложением.

Динамический компоновщик (dyld) довольно умен в загрузке фреймворков и повторном использовании того, что уже было загружено в большинстве случаев. Если в разнородных местах есть несколько приложений, использующих среду, определенно предпочтительнее установить ее на /Library/Frameworks/. Однако, поскольку кажется, что все «приложения», на которые вы ссылаетесь, находятся в вашем пакете .app, вряд ли у этого подхода будет много пользы, поскольку все они будут связаны по одному и тому же пути, который dyld должен забрать на. (Пользователь не только должен иметь права администратора для изменения /Library, но и процесс установки мгновенно усложняется.) См. Последнюю часть моего ответа на связанный вопрос SO , чтобы узнать, как анализировать запуск выполнение исполняемых файлов, в том числе проверка dyld активность.

Еще одним соображением является степень контроля над версиями фреймворка, когда они хранятся в вашем комплекте приложений. Если вы намеренно «публикуете» фреймворк, помещая его в каноническое общедоступное место, вы должны быть готовы принять последствия, которые другие, возможно, захотят связать с ним. Однако, если фреймворк распространяется только внутри вашего пакета приложений, любой разработчик, который в любом случае решит ссылаться на него, не будет никого обвинять, кроме себя. : -)

1 голос
/ 14 июля 2009

Согласно Руководству по программированию Apple Framework"почти во всех случаях установка ваших фреймворков в / Library / Frameworks - лучший выбор", потому что код, общий для приложений, совместно использующих фреймворки, загружается только один раз. в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...