2015-09-12 48 views
14

我有一個Swift類,它與多個具有不同部署目標的目標鏈接,主項目具有iOS 7最低要求,並且有iOS 8目標的擴展。警告:對最低部署目標進行不必要的檢查

現在,當我編譯項目,編譯器會引發在這行代碼警告:

if #available(iOS 8.0, *) { ... } 

「爲‘iOSApplicationExtension’不必要的檢查;最小的部署目標,確保警衛將永遠是真正的」

我已經檢查過構建設置選項,發現沒有開關可以殺死敏捷警告。

我試圖通過這條線,但沒有成功,分別定義iOSApplicationExtension版對象:

if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... } 

有沒有辦法抑制這種惱人的消息?

+1

看到此鏈接可能是與你的幫助https://forums.developer.apple.com/thread/15030 –

+1

最有可能延長您的最低部署目標是iOS版8.這將意味着'#available( iOS 8.0,0)'將永遠是真實的,即它是不必要的。 –

+0

@ILikeTau應用程序擴展只適用於iOS 8+。這就是我爲什麼這樣做的原因。 – Mousavian

回答

1

找到一個醜陋的解決方法,以沉默的警告,但我希望有一個更好的辦法:

在iOS系統中8+目標構建設置,我在生成設置中定義的預編譯標誌 - >雨燕編譯器 - 自定義標記 - >其他雨燕標誌:

-D iOS8target

然後,我改變的代碼是這樣的:

#if iOS8target 
    // iOS 8+ compatible code 
#else 
    if #available(iOS 8.0, *) { 
     // repeat iOS 8+ compatible code again! 
    } else { 
     // iOS 7 code 
    } 
#endif 

這不是重構和醜陋的,但它的工作原理!

UPDATE: 有一個快速的編譯器開關-suppress-warnings忽略所有警告。但它也抑制了有用的警告。 另外,如果只有一個發出警告的特定文件,則可以在Building Phases窗格中使用-w標誌。它也會抑制有用的警告,但僅限於一個文件。

+4

我寧願接受警告:S – nobre

1

Cocoapod的下一個版本(在0.39.0之後)應該解決這個問題。查詢this瞭解更多詳情。

0

請檢查您的部署目標到您的General中,並從9.0 設置爲7.0或更低。此警告將自動刪除。

+0

有不同的項目使用相同的源文件。無法改變它。有些需要8 + – Mousavian

+0

如果從ios8 +已棄用,那麼你必須爲舊的和新的類都編碼。沒有選擇。嘗試將部署目標設置爲8。 –