2010-06-27 71 views
0

好吧,我肯定这是一个简单的问题。有条件地导入框架

我正在开发一个iAd框架的iPhone应用程序,它仅适用于iOS 4.0或更高版本。

不过,我想选择一个iPhone OS 3.0部署目标,这会导致一切崩溃。

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

显然,这是行不通的,因为我不知道正确的语法。另外:

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

如果你们能帮助我,我会非常好的印象。

感谢

+0

这已经涵盖:http://stackoverflow.com/questions/3027120/how-to-make-iphone-app-for-multiple-firmwares/3027213#3027213 – progrmr 2010-06-27 19:21:35

回答

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,AdClassnil和代码将不会执行。请注意,使用ADBannerView*作为变量的类型不应引起任何问题,因为它仅仅是编译器的提示,与编译后的id相同。

+0

我已经尝试改变为弱已经,但它似乎不工作 - 它一直说不存在这样的文件或目录。 什么可能是错的? (我从Target一路走过,获取信息,并且我将该类型设置为弱而不是必需的)。 另外,我需要在许多方法中处理我的AdBannerView(主要将它带到最前面)。我应该在哪里声明你发送的片段?在实施? ViewDidLoad显然不起作用,那么在哪里? (抱歉我的基本技能在这里)。 谢谢 – GSchv 2010-06-27 18:16:06

+0

您应该像往常一样导入iAd('#import ')。您可以在任何想要使用'ADBannerView'的地方使用上述代码(如果需要,还可以包括'viewDidLoad')。在第一行之后,“AdClass”与“ADBannerView”类完全相同,或者如果不支持,则为零,其余与正常使用类相同。 – mohsenr 2010-06-27 18:50:48