2017-03-01 21 views

回答

6

是,如果您的應用的Base sdk等於或高於靜態庫的部署目標,則您的構建將無錯地編譯。

靜態庫內部是一堆編譯對象。應用程序編譯完成後,在鏈接時,它會檢查靜態庫中使用的符號的可用性。如果您的項目的基礎sdk等於或高於靜態庫的部署目標,您的項目將查找庫中使用的所有符號的定義-So 無編譯器錯誤

在運行時,如果您在ios版本低於靜態庫的部署目標的設備上使用您的應用,並且使用了該版本中不可用的符號,則可能會出錯。

如果您的代碼/庫的使用符號:

  1. 主項目的基本SDK沒有定義(例如,從庫中的較新的操作系統一 符號),你會得到一個編譯時錯誤。
  2. 在基本SDK中定義但標記爲棄用,您會收到編譯時警告。
  3. 在部署目標中定義,您的代碼正常鏈接和構建。運行時:

    • 在運行早於部署目標的操作系統的系統上,如果使用該OS中不可用的符號,則代碼可能無法加載。
    • 在運行等於或晚於部署目標 的操作系統的系統上,您的代碼對於在該操作系統中不可用的符號具有空指針。

來源:developer.apple.com

這裏是從上面的鏈接圖片,說明您可以根據部署目標和基地SDK Image from above link, explaining what symbols you can use depending on deployment target and base sdk.

+0

嗯那就是我所害怕的。雖然這很有道理,但我希望它們能成爲我想做的事情。謝謝! –

相關問題