【问题标题】:Integrating Newsstand without breaking backwards compatibility在不破坏向后兼容性的情况下集成报亭
【发布时间】:2011-10-28 15:36:47
【问题描述】:

我正在研究将 Newsstand 集成到一个新的 iOS 应用程序中,并想知道我是否可以这样做,以使该应用程序仍然可以在尚未迁移到 iOS 5 的设备上运行。

谁能给我一些关于如何构建应用程序来处理这个问题的反馈?

我知道单个应用程序可以具有不同的目标和源文件集,但我希望尽可能保持代码库的统一,并动态测试报亭功能。

【问题讨论】:

    标签: ios5 backwards-compatibility


    【解决方案1】:

    首先,您必须将应用程序弱链接到 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 功能之外,所有这些都是超出这个特定问题的实现细节。

    【讨论】:

    • 嗨,Viggio,这是个好主意,谢谢。这使我能够保持我的代码统一,同时隔离可能导致向后兼容性问题的部分。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-11-10
    • 2016-10-29
    • 2019-08-29
    • 2023-04-02
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    相关资源
    最近更新 更多