【问题标题】:Managing two device-specific applications管理两个特定于设备的应用程序
【发布时间】:2011-02-15 18:43:28
【问题描述】:

我有一个已发布并在应用商店中的应用。我们现在正在开发该应用程序的 iPad 版本,但我们不会将其作为通用应用程序发布,因为 iPad 版本具有许多不同的功能,不会移植回 iPhone 应用程序。我们的客户还希望应用在不同的 SKU 下发布。

我在 Xcode 中将我的 iPhone 目标升级到 iPad 并选择了“两个特定于设备的应用程序”,但我在 iPad 上运行 iPhone 应用程序时遇到了问题。

应用程序在 iPad 上的 iPhone 模拟器中加载,但随后因以下错误而崩溃:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在包中加载 NIB:“NSBundle(已加载)”,名称为“MainWindow-iPad”

在 Info.plist 中,我指定了 2 个不同的 XIB 文件作为 iPhone 和 iPad 的主要 nib 文件。问题是 iPhone 应用程序在 iPad 上加载时会尝试加载 MainWindow-iPad.xib 而不是 iPhone 特定的 MainWindow.xib。

我认为运行两个特定于设备的应用程序的好处是可以轻松地在两个应用程序之间共享代码,但如果我因为这个窗口问题而无法在 iPad 上的模拟器上运行 iPhone 版本,我会有点不走运。

任何帮助都会很棒!

【问题讨论】:

    标签: iphone xcode ipad ios


    【解决方案1】:

    听起来二进制文件认为您正在运行一个通用应用程序。尝试使用单独的 info.plist 文件,每个文件只包含您想要用于该设备的 xib 文件。如果您还没有的话,您可能还需要有两个单独的目标,每个设备一个。

    另外,这可能会有所帮助http://cluebucket.com/blog/2010/12/30/universal-apps-ipod-touch/

    【讨论】:

    • 啊,我没有考虑使用不同的 Info.plist 文件。我确实为 iPhone 和 iPad 设置了两个单独的目标,但是它们都使用相同的 plist,所以会加载不正确的 MainWindow xib。我会试一试!谢谢!
    • 很高兴听到这个消息。谢谢你告诉我。
    猜你喜欢
    • 2018-10-09
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-10
    • 2014-10-14
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多