代码之家  ›  专栏  ›  技术社区  ›  Redwood

当将多个应用程序放在一个包中时,框架应该放在/library/frameworks中还是放在应用程序包中?

  •  3
  • Redwood  · 技术社区  · 16 年前

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

    我计划将已启动守护进程的可执行文件放入GUI的.app包中。

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

    将这些框架放在/library/frameworks中(从而保存加载相同代码的多个应用程序)还是将它们保存在应用程序包中(从而使应用程序独立于启动的plist之外)?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    底线:我会选择自给自足,除非/直到你有令人信服的证据证明框架 /Library/Frameworks/ 将为您的特定场景提供显著的改进。检查这两种方法的效果,但是我更喜欢从应用程序开始对框架进行分组。

    动态链接器( dyld )在加载框架和重用大多数情况下已经加载的内容方面非常聪明。如果有几个应用程序在不同的位置使用一个框架,它肯定会被安装到 /库/框架/ . 但是,由于您所指的所有“应用程序”似乎都在您的.app包中,因此这种方法似乎没有多大好处,因为它们都将链接到同一路径,即 迪尔德 应该接电话。(不仅要求用户具有修改的管理员权限 /Library ,但安装过程立即变得更加复杂。)请参见 my answer to a related SO question 有关分析可执行文件的启动性能的想法,包括检查 迪尔德 活动。

    另一个考虑因素是当框架版本存储在应用程序包中时,您对框架版本控制的程度。如果您有意通过将框架放置在规范的公共位置来“发布”它,那么您必须准备好接受其他人可能选择与之链接的后果。但是,如果一个框架只分布在你的应用程序包中,那么任何选择链接到它的开发人员除了他们自己之外,没有人可以责怪他们。-)

        2
  •  1
  •   IlDan    16 年前

    根据 Apple Framework Programming Guide “对于几乎所有情况,在/library/frameworks中安装框架都是最佳选择”,因为共享框架的应用程序所共有的代码只在内存中加载一次。

    推荐文章