【问题标题】:Running an iPhone app with a 3.0 feature on a 2.2.1 device在 2.2.1 设备上运行具有 3.0 功能的 iPhone 应用程序
【发布时间】:2010-01-13 22:49:53
【问题描述】:

有人要求我向应用添加 3.0 功能(媒体选择器)。

但该应用必须继续在 2.2.1 设备上运行。 (禁用该功能)

如何编译它,使其在 2.2.1 上运行,而不会出现编译器错误,以包含 3.0 功能?

按照 MailComposer 示例中的说明,我已将目标设置设置为 2.2.1,将基本 SDK 设置为 3.1.2。

我看过弱链接,但这显然只是针对链接器步骤,对编译器错误没有任何作用。

【问题讨论】:

    标签: iphone iphone-sdk-3.0 backwards-compatibility


    【解决方案1】:

    要避免编译器错误,只需将 C 函数声明为 extern(Objective-C 函数会生成警告,但不会产生编译器错误)。正如您所发现的,链接器错误可以通过弱链接来修复。

    【讨论】:

    • 好的,但是我可以这样声明一个类型吗?就像我需要使用指向 MPMediaPickerController 的指针一样?
    • 对于任何使用的类,都需要进行前向声明。对于MPMediaPickerController,您可以使用@class MPMediaPickerController;
    【解决方案2】:

    我通常做的是将我需要的类的定义从 3.0 SDK 复制到我关心的方法到我的项目中,然后我调用这些方法,就好像什么都没发生一样。唯一棘手的部分是实例化,为此使用:

    MyCopiedClass object = [[NSClassFromString(@"MyCopiedClass") alloc] init];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多