有条件的进口框架

时间:2010-06-27 17:49:01

标签: iphone import frameworks version if-statement

首先,我确信这是一个简单的问题。

我正在使用iAd Framework开发iPhone应用程序,该应用程序仅适用于iOS 4.0或更高版本。

尽管如此,我还是想选择一个iPhone OS 3.0部署目标,这会导致一切崩溃。

  • 我如何有条件地包含iAd框架? ......我的意思是,它会是这样的: ... if([[UIDevice currentDevice] systemVersion]> = 4.0])#import

显然这不起作用,因为我不知道正确的语法。也:

  • 如何有条件地声明AdView *变量?
  • 如何在我的实施文件中有条件地处理此AdView *变量。

如果你们能帮助我,我会留下非常深刻的印象。

由于

1 个答案:

答案 0 :(得分:2)

您无需更改包含,您需要将iAd(或任何其他新框架)弱化链接:

在您的目标中,在链接的框架中找到iAd,并将其“角色”从“必需”更改为“弱”。

要有条件地处理变量,请使用NSClassFromString函数,如下所示:

Class AdClass = NSClassFromString(@"ADBannerView");
if(AdClass) {//if the class exists
    ADBannerView* myAd = [[AdClass alloc] initWithFrame:CGRectZero];
    // do something with the ad
}

如果操作系统比iOS 4.0旧,AdClass将为nil,代码将无法执行。请注意,使用ADBannerView*作为变量的类型不应该导致任何问题,因为它只是编译器的提示,并且在编译后与id相同。