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