我正在研究将报亭集成到一个新的iOS应用程序中,并想知道我是否能够以允许该应用程序在尚未迁移到iOS 5的设备上运行的方式执行此操作。
有人可以给我一些关于如何构建应用程序来处理这个问题的反馈吗?
我知道可以使用具有不同目标和源文件集的单个应用程序,但我希望尽可能保持代码库的统一,并动态测试Newsstand功能。
答案 0 :(得分:5)
首先,您需要将应用程序弱连接到NewsstandKit框架。这避免了具有iOS版本的设备<由于缺少库,5将崩溃。
然后在运行时,您需要避免调用NK方法并引用显然在iOS中不可用的NK类&lt; 5.在这种情况下,您可以使用NSClassFromString()或其他obj-c运行时功能等方法,以便动态检测这些功能的存在。
在这种情况下我可以做的建议是提供一个预编译器指令,允许您在编译级别隔离所有报亭的东西。通过这种方式,您可以尝试使用SDK 4进行编译(如果有的话)并查看编译器错误或警告。
E.g。如果你在Prefix.pch中添加一个像这样的定义
#define WILL_USE_NK
然后你可以用这种方式括起所有NK引用:
#ifdef WILL_USE_NK
... your NK statements go here ...
#endif
稍后,当您使用SDK4编译应用程序时,您将保留此定义,以便您有一个真正的SDK4编译对iOS4设备有效(您可以测试),并且您将确保所有的NK引用都不被iOS4应用程序。 然后你必须#undef这个定义并在分发应用程序之前用SDK5编译(当然保留一些iOS 4.x为最低目标)。
当然,通过这种方式,您不会受到所有可能的错误的保护,但至少您已经隔离了NK引用。
就应用程序的业务逻辑更好的策略而言,这取决于您:这不是一项容易的任务,因为现在报亭可以处理许多方面,例如后台下载等。此外,杂志模型现在分为现有模型和NKIssue功能,但所有这些都是超出此特定问题的实施细节。