2012-10-02 150 views

回答

10

是的,任何iOS SDK都可以讓你開發以前版本的操作系統。 例如,即使使用iOS6 SDK,您也可以開發iOS5。

您只需將「部署目標」設置設置爲5.1。

然後,您可以:在iOS5.1可用

  • 或者只使用方法,不使用任何iOS6的專用方法,以確保您的應用程序仍然會在iOS5.1
  • 運行
  • 或執行每次你想調用一個只在iOS6中可用的方法時,在運行時檢查,並且只有在該方法可用的情況下(如果用戶的iPhone具有支持該方法的最近版本的iOS)才調用該方法。

欲瞭解更多信息和配置和示例情況的詳細說明,我強烈建議蘋果文檔在讀SDK Compatibility Guide


例如,如果你想提供一鍵分享到社交網絡的東西,你可能要使用的Social.framework,但是這一個是僅適用於iOS6的。因此,你可以提出這個功能對於iOS6的用戶和警報iOS5的用戶,他們需要更新他們的iPhone到iOS6的使用這個特定的功能:

// Always test the availability of a class/method/... to use 
// instead of comparing the system version or whatever other method, see doc 
if ([SLComposeViewController class]) 
{ 
    // Only true if the class exists, so the framework is available we can use the class 
    SLComposeViewController* composer = [composeViewControllerForServiceType:SLServiceTypeFacebook]; 
    // ... then present the composer, etc and handle everything to manage this 
} else { 
    UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Sharing unavailable" 
       message:@"You need to upgrade to iOS6 to be able to use this feature!" 
       delegate:nil 
       cancelButtonTitle:nil 
       otherButtonTitles:@"OK, will do!"]; 
    [alert show]; 
    [alert release]; 
} 

然後簡單的薄弱環節Social.framework(改變「必需」,以如果將框架添加到鏈接器構建階段,則爲「可選」),如文檔中詳細介紹的那樣。

+0

非常詳細和全面的答案:D我會讀它。感謝:D 但我想知道爲什麼在Target和Project中有兩個獨立的部署配置。 – code4j

+0

出於與每個其他構建設置相同的原因。例如,如果您的項目生成應用程序或庫的「簡單」版本(例如,使用#if!LIGHTVERSION /#endif條件來停用代碼的某些部分),這可能會很有用,這將與5.0兼容。和相同應用程序的「完整」版本,其中將包含更多功能,這些功能僅與iOS 6.0兼容。在這種情況下,讓您的「LightApp」目標使用iOS5的部署目標並且您的「FullApp」目標使用iOS6的Dep目標是有意義的。 _這只是一個例子;)_ – AliSoftware

+0

非常好的解釋,非常感謝:) – code4j

1

是的,你仍然可以創建的iOS 5與iOS 6的SDK兼容的應用程序。您必須相應地設置部署目標(如您所做的那樣),而不是使用任何iOS 6功能。

相關問題