簡體   English   中英

Swift 2.2應用程序不再適用於macOS 10.14 Mojave

[英]Swift 2.2 app no longer works on macOS 10.14 Mojave

我制作了±個第三方應用程序的插件。 該插件的一部分是用Swift編寫的。 由於此問題,該插件卡在Xcode 7.3.1 / Swift 2.2

該插件不再適用於Mojave。

我們有以下觀察結果:

  • 該問題僅限於Mojave,所有功能均可在舊版macOS上正常運行。
  • 如果第三方應用程序要求“加載此捆綁包”的插件,它只會變成nil。
  • 完全不調用插件的init方法。
  • 如果我從插件的代碼庫中完全刪除了Swift 2.2(使其無法使用),則說明其捆綁包已正確加載。

任何想法可能導致此問題的原因以及如何解決?

PS:追求用戶安裝較新版本的Python / PyObjC是不可行的,也不希望Apple將較新版本的Python / PyObjC與macOS捆綁在一起(因此,插件代碼庫無法升級為較新的Swift版本)。 計划將代碼從Swift遷移到Objective-C,但不會立即發生(這需要幾個月的時間)。

我設法使該插件在Mojave上運行。

nil是通過調用NSBundle的PrincipalClass返回的。 根據我對官方文檔的理解,有兩種方法可以確定PrincipalClass。

  • 主體類名稱是在info.plist文件中手動指定的。 由於該插件未在此處指定,因此此步驟不適用。
  • 鏈接時,主體類是ld命令行上列出的第一個類。 由於High Siera和Mojave都使用了完全相同的插件二進制文件,因此“ ld命令行上列出的第一個”是相同的,因此返回的主體類在這兩個版本上應該相同。

不知何故,PrincipalClass調用在High Sierra和Mojave上返回了不同的值。 就我個人而言,我看不出它應該表現出什么不同的任何原因,因為文檔沒有更改,並且邏輯聽起來完全取決於編譯插件時發生的事情,而不是取決於運行插件時環境的情況。

但是,在將NSPrincipalClass項目添加到info.plist文件之后,該插件已成功加載到Mojave上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM