【发布时间】:2011-10-28 15:36:47
【问题描述】:
我正在研究将 Newsstand 集成到一个新的 iOS 应用程序中,并想知道我是否可以这样做,以使该应用程序仍然可以在尚未迁移到 iOS 5 的设备上运行。
谁能给我一些关于如何构建应用程序来处理这个问题的反馈?
我知道单个应用程序可以具有不同的目标和源文件集,但我希望尽可能保持代码库的统一,并动态测试报亭功能。
【问题讨论】:
标签: ios5 backwards-compatibility
我正在研究将 Newsstand 集成到一个新的 iOS 应用程序中,并想知道我是否可以这样做,以使该应用程序仍然可以在尚未迁移到 iOS 5 的设备上运行。
谁能给我一些关于如何构建应用程序来处理这个问题的反馈?
我知道单个应用程序可以具有不同的目标和源文件集,但我希望尽可能保持代码库的统一,并动态测试报亭功能。
【问题讨论】:
标签: ios5 backwards-compatibility
首先,您必须将应用程序弱链接到 NewsstandKit 框架。这样可以避免 iOS 版本
然后在运行时,您需要避免调用 NK 方法并引用显然在 iOS
在这种情况下我可以这样做的建议是提供一个预编译器指令,允许您在编译级别隔离所有报亭内容。通过这种方式,您可以尝试使用 SDK 4(如果有)进行编译并查看编译器错误或警告。
例如如果您在 Prefix.pch 中添加这样的定义
#define WILL_USE_NK
那么您可以用这种方式将所有 NK 引用括起来:
#ifdef WILL_USE_NK
... your NK statements go here ...
#endif
稍后,当您使用 SDK4 编译应用程序时,您会保留此定义,这样您将获得对 iOS4 设备有效的真正 SDK4 编译(您可以测试),并且您将确保您的所有 NK 引用都不会被iOS4 应用程序。 然后你必须#undef 这个定义并在分发应用程序之前使用 SDK5 编译(当然保留一些 iOS 4.x 作为最低目标)。
当然,通过这种方式,您无法避免所有可能的错误,但至少您已经隔离了 NK 引用。
至于关于应用程序业务逻辑的更好策略,这取决于您:这不是一件容易的事,因为现在报亭处理了许多方面,例如后台下载等。除了杂志模型现在分为现有模型和 NKIssue 功能之外,所有这些都是超出这个特定问题的实现细节。
【讨论】: