【问题标题】:iPhone & Ipad - how do I fork a code?iPhone & Ipad - 我如何分叉代码?
【发布时间】:2010-02-21 15:19:35
【问题描述】:

我的问题是:我有一个为 iPhone 设计的应用程序,我决定分叉代码,换句话说,我将在初始阶段开发两个版本的应用程序,一个用于 iPhone,另一个用于 iPad。

我的问题是:我如何分叉代码?我想继续为这两个版本使用一个项目,但很明显,我将不得不为 iPhone 编写代码部分,而其他部分则专门为 iPad 编写,当然,这两个版本都有许多共同点。

如何做到这一点又不会造成代码混乱?

最佳做法是什么?感谢您的帮助。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 ipad


    【解决方案1】:

    您可以配置您的 XCode 项目以使用多个目标, 然后您可以将一些源代码文件分配给一个目标或另一个目标或两者

    【讨论】:

    • 两个问题:1)我如何做那个作业 2)部分代码呢。我可以将部分代码分配给一个目标或另一个目标吗? (编译这个 IF ipad 或那个 if iphone)......这是怎么做的?谢谢。
    【解决方案2】:

    多目标的问题是它可能与分布模型冲突。

    据我了解,iPad 和 iPhone 应用程序将作为 单个 二进制文件分发。应用程序已决定是否在运行时显示 iPad 或 iPod 用户界面。

    这意味着,如果您不想在商店中将应用程序“Foo”和“Foo iPad Edition”分开,则您不能使用多个目标,并且您将必须使用一个代码库。

    我有点讨厌这个,因为应用程序中可能有很多有条件的东西。如果 iPad 则执行此操作,否则执行此操作。如果 iPhone 则显示此视图控制器,否则显示另一个。我不认为这会带来好的代码。

    所以我目前正在考虑的是在中间做一些事情:我将创建基本上两个代码库,并且在应用程序的早期某个地方我将决定采用完整的 iPad 或 iPhone 代码路径。

    【讨论】:

    • Apple 文档没有说应用程序必须作为单个二进制文件分发。相反。它表明该决定将由开发商做出。我认为未来会有更多设备出现,所以当添加第三个设备类别时情况会变得更糟。
    【解决方案3】:

    我不是 iPhone 开发人员,但根据 St3fan 的指示(它必须作为单个二进制文件分发),这些似乎是工厂模式的经典案例。任何不同的东西都以两种不同的方式(使用通用接口)实现,工厂根据它是在 iPhone 还是 iPad 上吐出不同的实现。通用代码无需更改,因此可以保持原样。

    【讨论】:

      【解决方案4】:

      我回复你的观点: 1)“我如何做那个任务” 您必须从项目菜单中创建一个新目标 就我而言,我使用两个不同的目标 用于 iPhone 游戏(普通版和免费(精简版)版)

        so I created a second Target of Type Application
        this will add a Target to the Groups & Files panel
        and will create a new Info.plist file
      
        in the Group&File you can show more columns (by right clicking)
        on "Group&Files"), here you have to show the "Target Memebership column"
        for each file you can decide if it is part of a target by pressing the
        corresponding check box
      

      2) “那部分代码呢” 我不知道当前用于开发 iPad 应用程序的 Beta SDK 是否包含一些您可以在编译期间测试的#define 在每种情况下,您都可以在目标级别设置一些专用的#define 并对其进行测试以进行一些条件编译

      您可以找到有关构建应用程序的非常详细的信息 在专用苹果文档中有多个目标 你可以从 iPhone 开发中心下载 您需要阅读本指南 《Xcode 项目管理指南》

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-16
        • 2017-03-18
        • 1970-01-01
        • 2014-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多