2012-05-28 40 views
18

有沒有辦法有Xcode中告訴我,當我打電話,是不是可以在所支持的最低目標的SDK的方法?iOS的Xcode中:警告有關方法沒有最低目標SDK

例如,方法[NSURLConnection的sendAsynchronousRequest:隊列:completionHandler:]。此方法在iOS5及更高版本中可用。但我的應用程序的最低目標是iOS4。

如果我使用的方法(sendAsync),我想的Xcode告訴我,這種方法不適用於我想支持的最低目標。

我試圖把__IPHONE_OS_VERSION_MAX_ALLOWED =在預處理器設置40000,但只是觸發一堆也沒有什麼幫助蘋果SDK的錯誤。 (可能是因爲我的主動SDK是iOS5.1)

就是可以保持舊的SDK和Xcode中安裝它們唯一的解決辦法?

有沒有更簡單的解決方案?

+0

我不確定我是否理解這個問題。即使您定位舊版本,也總是使用最新的SDK。事實上,如果您不使用最新的SDK,Apple將不會在App Store中接受您的應用程序。但只要你使用可用於目標版本的API的子集,你就是個好主意。 –

+0

沒錯,但是如果有人在iOS4上安裝應用程序,我需要確保我沒有使用任何iOS5 + API。所以我正在尋找一種讓xcode提醒我的方法,而不是去查看每一行代碼並仔細檢查它是否是iOS 4安全的。 – gngrwzrd

+0

也許[this Apple techdoc](http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html#//apple_ref/doc/uid/10000163i-CH1-SW2 )也許有幫助? –

回答

5

做了一些研究後,閱讀Apple Doc,並嘗試了一些東西。解決方案是從Apple下載一箇舊的Xcode DMG,抓取與您的部署目標相同的SDK的.pkg文件,並將其安裝到您的Xcode版本中。具體方法如下:

  1. 下載年長Xcode.dmg從蘋果
  2. 打開DMG
  3. 在終端,進入包: 「CD /卷/ [DMG] /包;開放」
  4. 找到你想要的SDK,像iPhoneSDK_4.0.pkg
  5. 安裝該軟件包,但更改安裝目錄/應用/ Xcode中/內容/開發人員
  6. 重新啓動的Xcode,如果它是開放的。

既然您的SDK具有相同的部署目標,請將BaseSDK設置爲相同。當你建立你會得到有關缺少方法的警告。您的項目可能會也可能不會使用舊版本的BaseSDK在新版本的Xcode中成功構建,但這並不重要 - 您只需找到需要用respondsToSelector:進行功能檢查的方法調用即可。

6

不幸的是沒有這樣做的標準方式。通過將目標OS設置爲比基本SDK更低的數字,Xcode將弱鏈接庫和框架。這樣做時,Xcode不會警告您使用目標OS上可能不可用的方法。

您可以臨時將基礎SDK設置得較低,但這可能無法正常工作。既然你想忽略大部分產生的錯誤和警告(因爲它們只是在你的代碼路徑中被有條件地調用),並且很多警告和錯誤都依賴於在編譯器給出任何有意義的輸出之前可能需要解決的其他錯誤。

我不認爲存在任何靜態分析工具對於這一點,無論從蘋果也沒有第三方。

+0

同意了,我找到了同樣的東西。 – gngrwzrd

0

從Xcode 7.3開始,編譯器現在可以爲您生成這些警告。您只需在構建設置中設置-Wpartial-availability警告標誌,如this answer中所述。