将多个应用程序放在一个捆绑包中时,是否应将框架放在/ Library / Frameworks或应用程序包中

时间:2009-07-14 00:25:53

标签: cocoa frameworks

我有一个由GUI和3个launchd守护程序组成的应用程序启动了命令行可执行文件。

我打算将launchd守护进程的可执行文件放在GUI的.app包中。

这些应用程序使用了我创建的2个(都非常小)框架。

将这些框架放在/ Library / Frameworks中是一个更好的主意(从而保存多个应用程序加载相同的代码)或将它们保存在应用程序包中(从而使应用程序自包含除了launchd plists之外) ?

2 个答案:

答案 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中安装框架是最佳选择“,因为共享框架的应用程序通用的代码只在内存中加载一次。