我有一个由GUI和3个launchd守护程序组成的应用程序启动了命令行可执行文件。
我打算将launchd守护进程的可执行文件放在GUI的.app包中。
这些应用程序使用了我创建的2个(都非常小)框架。
将这些框架放在/ Library / Frameworks中是一个更好的主意(从而保存多个应用程序加载相同的代码)或将它们保存在应用程序包中(从而使应用程序自包含除了launchd plists之外) ?
答案 0 :(得分:2)
结论:除非您有令人信服的证据证明将/Library/Frameworks/
中的框架放入将为您的特定情况提供明显的改进,否则我会选择自包含。检查两种方式的影响,但我更喜欢将框架与应用程序分组开始。
动态链接器(dyld
)在加载框架和重用大多数情况下已经加载的内容方面非常聪明。如果在使用框架的不同位置有多个应用程序,则最好将其安装到/Library/Frameworks/
。但是,由于您所指的所有“应用程序”似乎都在您的.app包中,因此这种方法似乎没有太大的好处,因为它们都将链接到同一路径{{{ 1}}应该接受。 (不仅用户需要具有修改dyld
的管理员权限,而且安装过程会立即变得更加复杂。)请参阅my answer to a related SO question的最后一部分,了解有关分析可执行文件的启动性能的想法,包括检查/Library
活动。
另一个考虑因素是当您将应用程序包存储在应用程序包中时,您对框架版本控制的控制程度。如果您通过将框架置于规范的公共场所来有目的地“发布”框架,那么您必须准备接受其他人可能选择链接它的后果。但是,如果框架仅在您的应用程序包中分发,那么任何选择链接它的开发人员都无需责备自己。 : - )
答案 1 :(得分:1)
根据Apple Framework Programming Guide几乎所有情况,在/ Library / Frameworks中安装框架是最佳选择“,因为共享框架的应用程序通用的代码只在内存中加载一次。