在2.2.1设备上运行带有3.0功能的iPhone应用程序

问题描述:

我被要求将3.0功能(媒体选取器)添加到应用程序。在2.2.1设备上运行带有3.0功能的iPhone应用程序

但是,该应用程序必须继续在2.2.1设备上运行。 (随着功能禁用)

我怎么能编译此,在这样一种方式,它运行在2.2.1,没有得到一个编译器错误,对于包括3.0功能?

按在MailComposer例子说明,我已经把我的目标设定到2.2.1和我的基地SDK 3.1.2。

我看弱联,但这显然只是为了连接步骤,并且确实一无所知编译器错误。

要解决的编译器错误,只是声明了C函数为extern(Objective-C的功能将生成一个警告,但没有编译器错误)。链接器错误可以通过弱链接来解决,因为你已经不适应了。

+0

好的,但我可以声明一种类型吗?就像我需要使用指向MPMediaPickerController的指针一样? – 2010-01-13 23:00:43

+0

对于使用的任何类,您需要执行前向声明。在'MPMediaPickerController'的情况下,你可以做'@class MPMediaPickerController;'。 – Mike 2010-01-13 23:05:38

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

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