【问题标题】:Can I develop my own objective-C Framework for Cocoa Touch Applications?我可以为 Cocoa Touch 应用程序开发自己的 Objective-C 框架吗?
【发布时间】:2009-08-19 14:47:11
【问题描述】:

是否可以创建一个自己的 obj-C Cocoa Touch 框架供其他开发人员使用?而且你能保护这个框架吗?

【问题讨论】:

  • 灰尘和指纹。

标签: iphone objective-c cocoa-touch


【解决方案1】:

我为 Xcode 4 创建了模板,允许您构建通用 iOS 框架(在设备和模拟器中都可以使用)。

安装模板后,您只需在创建新项目时选择“静态 iOS 框架”,剩下的就交给它了。它也适用于单元测试。

https://github.com/kstenerud/iOS-Universal-Framework

【讨论】:

  • 感谢您提供这样的解决方案,它为我节省了一些时间。
  • @karl 有升级您的模板的计划吗?
【解决方案2】:

您可以创建一个静态库。 XCode 项目选择器中有一个选项可以执行此操作。您必须将编译的静态库文件和头文件分发给库的用户。您的实际实现文件 (.m) 不需要分发。

GHUnit 在这方面做得很好 - 为模拟器和设备打包库 - 所以我建议查看这个项目。 (我也推荐使用这个库进行单元测试:-)

【讨论】:

【解决方案3】:

Objective C 中的框架通常只是 C / ObjC 代码和一堆类,没什么特别的。因此,您可以根据需要创建自己的,然后在构建时将其包含在您的项目中。 iPhone 不关心差异,它只知道将所有代码与其他所有内容一起放入您的应用程序中。

查看 Apple 网站上的 Framework Programming Guide。它会让你开始。基本上你要做的是在 XCode 中创建一个框架项目,然后从那里开始。

至于“保护”你的框架,我假设你的意思是让你的代码不可读。我不确定您是否以及如何做到这一点,但也许 Apple 的指南会对此有所说明。

【讨论】:

    【解决方案4】:

    是的,您可以创建用于 Cocoa Touch 的框架。

    但是有这些警告:

    1. 必须是静态链接的库,对我们来说没有动态加载 (dyld)
    2. 应该是 i386(模拟器)、arm6 和 arm7 的组合(lipo)库
    3. 您需要将捆绑项目破解到框架中
    4. 您应该将(小而少)图像嵌入到库中,这样开发人员就不必乱用资源,只需将其拖放到他的项目中即可
    5. ...或者,如果您有大量图片,请使用这些图片构建一个捆绑包

    我的网站上有这些内容的指南。

    1+2 = http://www.drobnik.com/touch/2010/04/universal-static-libraries/

    你必须用谷歌搜索的其他链接,因为这个网站不允许我发布多个 URL。

    【讨论】:

    • 它确实可以让您发布多个网址。
    • 使用 swift 我们不能创建静态库,唯一的办法就是创建一个框架。所以框架基本上是静态和动态库的集合,但我们不应该使用动态库,因为动态链接与苹果相反rules.so swift 项目变成了框架,它必须包含静态库,这很矛盾。
    【解决方案5】:

    您可以将静态库作为二进制文件(即基本的“保护”)提供给第三方,但不能提供动态库,因为 Apple 的 App Store 政策禁止动态链接。

    【讨论】:

      【解决方案6】:

      看一下给出的静态库的一个工作示例 this site

      【讨论】:

        【解决方案7】:

        如果您打算这样做,我认为JSON.framework 是一个很好的榜样。隐藏/混淆源代码是另一回事,也是一个完全不同的问题,

        【讨论】:

          【解决方案8】:

          创建新项目时,导航到 iOS > Framework & Library > Cocoa Touch Framework,就这么简单。编译成功后,.framework 将在 XCode 的 Products 文件夹下创建。右键显示在Finder中,可以找到输出。

          【讨论】:

            【解决方案9】:

            这不太可能按您希望的方式工作,因为其他开发人员将无法使用您的框架。 This StackOverflow Question 解释了原因。

            【讨论】:

            • 您假设框架会自动暗示使用不正确的动态库。您可以围绕静态(通用)库构建一个框架,因此它实际上工作得非常好。
            猜你喜欢
            • 1970-01-01
            • 2016-06-25
            • 2014-11-17
            • 1970-01-01
            • 1970-01-01
            • 2010-10-15
            • 2010-11-24
            • 1970-01-01
            • 2014-09-02
            相关资源
            最近更新 更多