gpt4 book ai didi

Swift 2.2 应用程序不再适用于 macOS 10.14 Mojave

转载 作者:行者123 更新时间:2023-11-28 07:38:20 25 4
gpt4 key购买 nike

我为 ± 第三方应用制作了一个插件。部分插件是用 Swift 编写的。由于 this issue,该插件卡在 Xcode 7.3.1/Swift 2.2。 .

该插件不再适用于 Mojave。

我们有以下观察:

  • 该问题仅限于 Mojave,在较旧的 macOS 版本上一切正常。
  • 如果第三方应用程序要求“加载此插件包”,它只会返回 nil。
  • 根本没有调用插件的 init 方法。
  • 如果我从插件的代码库中完全删除 Swift 2.2(使其无法使用),它的包将被正确加载。

任何可能导致此问题的想法以及如何解决它?

PS:要求用户安装更新版本的 Python/PyObjC 是不可行的,也不指望苹果将更新版本的 Python/PyObjC 与 macOS 捆绑在一起(因此插件代码库无法升级到更新的 Swift 版本) .计划将代码从 Swift 迁移到 Objective-C,但不会立即发生(这需要几个月的时间)。

最佳答案

我已经设法让插件在 Mojave 上运行。

nil 是通过调用 NSBundle 的 principalClass 返回的。以我对官方的了解documentation , principalClass 的确定方式有两种。

  • 主体类名是在 info.plist 文件中手动指定的。由于插件未在此处指定,因此不应执行此步骤。
  • 主体类是链接时在 ld 命令行中列出的第一个类。由于在 High Siera 和 Mojave 上使用了完全相同的插件二进制文件,“ld 命令行上列出的第一个”是相同的,因此返回的主要类在两个版本上应该相同。

不知何故,principalClass 调用在 High Sierra 和 Mojave 上返回了不同的值。就我个人而言,我看不出有任何理由表明它应该有不同的行为,因为文档没有改变,而且逻辑听起来完全取决于编译插件时发生的事情,而不是运行它时世界环境的情况。

但是,在我将 NSPrincipalClass 项添加到 info.plist 文件后,插件在 Mojave 上成功加载。

关于Swift 2.2 应用程序不再适用于 macOS 10.14 Mojave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com