我創建了一個具有iOS 10.2部署目標的靜態庫。該庫集成在部署目標爲9.0的應用程序中。防止在具有較低部署目標的SDK上構建應用程序
不知何故,應用程序在iOS 9.0上構建並運行良好。這是爲什麼? 應該建立應用程序,即使該庫只針對iOS 10.2及更高版本?
我創建了一個具有iOS 10.2部署目標的靜態庫。該庫集成在部署目標爲9.0的應用程序中。防止在具有較低部署目標的SDK上構建應用程序
不知何故,應用程序在iOS 9.0上構建並運行良好。這是爲什麼? 應該建立應用程序,即使該庫只針對iOS 10.2及更高版本?
是,如果您的應用的Base sdk等於或高於靜態庫的部署目標,則您的構建將無錯地編譯。
靜態庫內部是一堆編譯對象。應用程序編譯完成後,在鏈接時,它會檢查靜態庫中使用的符號的可用性。如果您的項目的基礎sdk等於或高於靜態庫的部署目標,您的項目將查找庫中使用的所有符號的定義-So 無編譯器錯誤。
在運行時,如果您在ios版本低於靜態庫的部署目標的設備上使用您的應用,並且使用了該版本中不可用的符號,則可能會出錯。
如果您的代碼/庫的使用符號:
在部署目標中定義,您的代碼正常鏈接和構建。運行時:
嗯那就是我所害怕的。雖然這很有道理,但我希望它們能成爲我想做的事情。謝謝! –
有趣的問題,用什麼符號。 – Fattie