我被要求向应用程序添加 3.0 功能(媒体选择器)。
但该应用程序必须继续在 2.2.1 设备上运行。(禁用该功能)
我如何编译它,使其在 2.2.1 上运行,而不会出现编译器错误,包括 3.0 功能?
根据 MailComposer 示例中的说明,我已将目标设置设置为 2.2.1,将基本 SDK 设置为 3.1.2。
我看过弱链接,但这显然只是链接器步骤,对编译器错误没有任何作用。
我被要求向应用程序添加 3.0 功能(媒体选择器)。
但该应用程序必须继续在 2.2.1 设备上运行。(禁用该功能)
我如何编译它,使其在 2.2.1 上运行,而不会出现编译器错误,包括 3.0 功能?
根据 MailComposer 示例中的说明,我已将目标设置设置为 2.2.1,将基本 SDK 设置为 3.1.2。
我看过弱链接,但这显然只是链接器步骤,对编译器错误没有任何作用。
要绕过编译器错误,只需将 C 函数声明为 extern(Objective-C 函数将生成警告,但不会产生编译器错误)。正如您所发现的,链接器错误可以通过弱链接来修复。
我通常所做的只是将我需要的类的定义从 3.0 SDK 复制到我的项目中,然后我调用这些方法,就好像什么都没发生一样。唯一棘手的部分是实例化,为此使用:
MyCopiedClass object = [[NSClassFromString(@"MyCopiedClass") alloc] init];