2010-06-27 69 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