在 iPhone 应用程序中隐藏已经开发的 iPad 类

Posted

技术标签:

【中文标题】在 iPhone 应用程序中隐藏已经开发的 iPad 类【英文标题】:Hiding already developed iPad classes in iPhone app 【发布时间】:2013-08-15 13:25:28 【问题描述】:

出于开发原因,我开始开发一个通用的 ios 应用程序,但想先用 iPhone 版本启动。

除了在构建设置中将“Targeted Device Family”修改为“iPhone”之外,是否还有其他必要的步骤来防止用户在其 iPad 上打开已经开发的 iPad 类/视图?

此外,用户(例如越狱设备)是否有可能在其 iPad 上以 iPad 模式进入应用程序? (如何)可以防止这种情况发生吗?

【问题讨论】:

看看***.com/questions/4923933/… 【参考方案1】:

您可以设置如下条件:

如果 (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

---做某事--

并注释掉加载 iPad 类和视图的调用

【讨论】:

【参考方案2】:

此问题的答案因您设置现有代码的方式而异。例如,如果您对当前硬件执行运行时检查,例如 if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 并根据结果更改 UI,那么您将不得不重做一些代码,因为即使应用程序只有 iPhone 的界面,那在 iPad 上条件仍会评估为 true。

然后另一种选择是让你的类在接口之间拆分。如果做得好,这可能是最好的方法。我的意思是真正坚持 MVC 范式并分别制作两个接口,然后将每个接口链接到其自己的控制器对象,然后将尽可能多的可重用逻辑为您的应用程序放在一个普遍可访问的对象中。

如果您按照我提到的第二种方式完成此操作,那么您应该不会有任何麻烦。只需将项目指向项目的 iPhone/iPad 版本的情节提要,即可加载正确的类文件等。这让我直接回答了您的问题。

只要您按照我列出的第二种方式设置项目,您真正需要做的就是修改“目标设备系列”。此外,不应该担心越狱用户会访问 iPad 文件. 他们可以进去,但无论如何他们都被编译了,99% 的人不知道如何处理那一大堆乱码。

即使他们这样做了,我认为没有人会不遗余力地尝试寻找 iPad 版本的 iPhone 专用应用程序。他们知道,如果一个应用有完整的 iPad 版本,它只会在他们的 iPad 上运行。

【讨论】:

【参考方案3】:

除了修改“目标设备系列”属性之外,您不需要其他任何东西。我认为即使在越狱设备上也不太可能启动 iPad 模式,但例如,您可以从 iPhone 构建项目中删除 iPad 文件(及其依赖项)。我仍然认为这不是必要的步骤。

【讨论】:

以上是关于在 iPhone 应用程序中隐藏已经开发的 iPad 类的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 应用程序中隐藏已经开发的 iPad 类

iPhone .ipa 文件在打开初始屏幕后变为空白?

如何在 iPhone 中仅使用开发证书生成 iPA 文件?

ios 用xCode开发,怎么打包ipa包,在未越狱的iPhone上可以直接安装

在 iPad 中分发 ipa

如何将应用打包成.ipa文件