【问题标题】:How to share/distribute compiled Objective-C code (like a JAR in Java)?如何共享/分发编译的 Objective-C 代码(如 Java 中的 JAR)?
【发布时间】:2010-11-10 08:35:01
【问题描述】:

我想编写一些用于分发的 Objective-C 代码。打包输出的最佳方法是什么。在 Java 中,您可以将代码打包到 JAR 文件中并分发。 Objective-C 中的等价物是什么?

以下链接已关闭,但似乎解决了我不关心的更多命名空间问题。我最关心的是如何设置代码以便于分发。

Objective-C equivalent of Java packages?

【问题讨论】:

    标签: objective-c frameworks software-distribution


    【解决方案1】:

    框架几乎肯定是要走的路。 OS X 上的框架的一大优点是它们可以将可执行代码、标头、元数据、图像、图标等捆绑在一个包中。此外,框架可以包含在*/Library/Frameworks/ 中,甚至可以包含在您的应用程序包中,以完全脱离任何其他应用程序对给定框架版本的依赖。

    Apple 的 Framework Programming Guide 是开始使用框架的最佳地点。

    创建框架很简单。基本上,在 Xcode 中,您选择 File > New Project... 并选择 Framework,然后选择 Cocoa Framework。这将建立一个具有框架目标的新项目,并在您构建时自动为您打包所有内容。

    不要忘记文档和单元测试是一件好事™,尤其是对于框架而言,与大多数最终用户代码相比,它们本质上更有可能被多个客户端使用。您可以将更多目标添加到您的框架 Xcode 项目中以记录和测试它。

    既然您正在寻找示例,请查看CHDataStructures.framework(我开发的一个项目)和PSMTabBarControl.framework(其中包括框架中的大量额外资源)。两者都是开源的,并且应该提供足够的示例供您自己使用。

    一句忠告让您免去一些麻烦:除非您单击框架目标并将 Role 更改为“Public”(或“私人”)。

    【讨论】:

    • 我打勾是因为所提供的链接或多或少已损坏。 CHDataStructures.framework WebSVN 不包含任何内容,PSMTabBarControl.framework 结果为 404。
    【解决方案2】:

    您想创建一个框架。 Xcode 中有一个新项目的起点来创建其中之一。有一些注意事项和陷阱,但总的来说过程很简单。

    编辑:澄清:如果您打算将其作为 FOSS 分发;将其打包在一个框架中可能是矫枉过正;仅仅分发源代码可能是一个更明智和更简单的选择。但是,如果您想自己保留源代码或将其与相关资源的集合一起分发,那么框架绝对是一个好主意。

    重新编辑:有关介绍,请参阅http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/

    【讨论】:

      【解决方案3】:

      你没有说它是否适用于 iPhone。在 iPhone 上,它需要是一个 .sa(静态链接库)——但我认为正态分布应该是 .dylib 或 .so

      【讨论】:

      • 它实际上是一个 .framework;这是一个打包在文件夹层次结构中的 .dylib,带有相关的头文件和资源。
      • 主要是 iphone - 但我可能想让它足够通用,也可以在 Mac 上工作。
      【解决方案4】:

      您可以将其编译为框架或静态库(所以我相信)。

      【讨论】:

        【解决方案5】:

        Java 程序在虚拟机的上下文中运行。 Jar 包含抽象字节码,必须由 VM 转换为本机机器码。

        Objective-C 与 C 一样,被编译成本机机器代码,例如 Win .exe 文件,可由操作系统直接运行。

        任何复杂的大多数程序都包含多个文件,包括 DLL、图标文件等。用于分发的文件配置通常由设置实用程序处理。

        【讨论】:

        • 最后一部分似乎与 Objective-C 完全无关。没有“设置实用程序”,幸运的是,没有与 Windows 具有相同意义的 DLL。 OS X 上的动态库实际上可以包含多个版本,因此客户端可以专门链接给定版本,并且如果库必须违反向后兼容性,则不会中断。框架是要走的路。
        • Objective-C 不是 OS X 独有的。
        猜你喜欢
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 2020-02-29
        相关资源
        最近更新 更多